Возникла проблема при отправке формы - «500 Internal Server Error»

JQuery

$(document).ready(function () {
    var EmailContainer = $('#EmailContainer');
    var url = EmailContainer.attr('data-url');
    EmailContainer.load(url, function () {
        var Emailform = $('#EmailForm');
        $.validator.unobtrusive.parse(Emailform);
        Emailform.submit(function () {
            debugger;
            var Emailform = $(this);
            if (Emailform.valid()) {
                var SendEmailUrl = EmailContainer.attr('Json-Url');
                var UserModel = { From: $('#From').val(), To: $('#To').val(), 
                      Subject: $('#Subject').val(), 
                      Description: $('#Description').val() }
                $.post(SendEmailUrl, UserModel, function (data) {
                    Emailform.html(data);
                    Emailform.removeData('validator');
                    Emailform.removeData('unobtrusiveValidation');
                    $.validator.unobtrusive.parse(Emailform);
                });
            }
            return false;
        });
    });
});

Частичное представление контроллера администратора

@model _1.Areas.Email.Models.User
@using (Html.BeginForm("SendEmail", "Admin", FormMethod.Post, new { id = "EmailForm" }))
{
    @Html.LabelFor(i => i.From);
    @Html.TextBoxFor(i => i.From);
    @Html.ValidationMessageFor(i => i.From);
    <br>
    @Html.LabelFor(i => i.To);                           
    @Html.TextBoxFor(i => i.To); 
    @Html.ValidationMessageFor(i => i.To);
    <br>     
    @Html.LabelFor(i => i.Subject);                           
    @Html.TextBoxFor(i => i.Subject);
    @Html.ValidationMessageFor(i => i.Subject);
    <br>
    @Html.LabelFor(i => i.Description);                           
    @Html.TextBoxFor(i => i.Description);
    @Html.ValidationMessageFor(i => i.Description);
    <br>
    
}

Проблема - при отправке частичного представления администратора контроллера. это дает "500 - внутренняя ошибка сервера"

Обновление - 1

Как вы можете видеть в Частичном представлении - я упоминаю действие в HTML.BeginForm, а также у меня есть форма для отправки. Я думаю, что запрос подается более одного раза?

 SMC19 февр. 2013 г., 13:28
Обновил мой запрос. Пожалуйста, проверьте.
 James South19 февр. 2013 г., 13:25
Вы'Вам нужно будет указать, что это за ошибка. Вкладка ответа в ваших инструментах разработки должна отображать ее.

Ответы на вопрос(2)

Когда вы используете jQuery и AJAX, MVC отправит любые страницы ошибок обратно клиенту, но, поскольку код состояния не "200 ОК " но "500 - внутренняя ошибка сервера"JQuery выигралЗапустить функцию обратного вызова, которую вы дали ей с помощью вызова AJAX.

Ваша проблема в том, что почтовый шаблон (view, .vbhtml) не может быть найден.

return Email("SendMail", model);

Приведенный выше код сообщает контроллеру, что нужно найти представление под названием «SendMail.vbhtml», На вашей последней фотографии вы можете увидеть, где MVC искалаSendMail.vbhtml ":~/Areas/Email/Views/Admin а также~/Views/Shared

Помещение вашего представления в одну из этих папок должно решить проблему

Решение Вопроса

Как говорится в сообщении об ошибке, приложение пытается найти представление под названием "Отправить письмо" это из-за вашей строки ниже запрашивающей.

[HttpPost]
public ActionResult SendMail(User Model)
{
    new MailController().SendMail(Model).DeliverAsync();
    return View(); // this is causing a redirect to a get version of this call
                   // asking for a view.
}

Вы намереваетесь вернуть HTML или JSON-ответ? Если HTML, то добавьте представление; если не вернуть.JsonResult

Ваш ответ на вопрос