【问题标题】:Facing issue while submitting the form - "500 Internal Server Error"提交表单时遇到问题 - “500 Internal Server Error”
【发布时间】:2013-02-19 12:22:04
【问题描述】:

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 />
    <input type="submit" value="Send Email" id="SendMail" />
}

问题 - 提交管理控制器的部分视图时。它给出“500 内部服务器错误”

更新 - 1

正如您在部分视图中看到的 - 我在 HTML.BeginForm 中提到了该操作,并且我还提交了表单。我认为请求被提交了不止一次?

【问题讨论】:

  • 您需要指定错误是什么。您的开发工具中的响应选项卡应该会显示它。
  • 更新了我的查询。请检查。

标签: jquery asp.net-mvc asp.net-mvc-3


【解决方案1】:

由于错误消息表明您的应用程序正在尝试查找名为“SendMail”的视图,这是因为您在下面的行请求了一个。

[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

【讨论】:

    【解决方案2】:

    当你使用 jQuery 和 AJAX 时,MVC 会将任何错误页面发送回客户端,但由于状态码不是“200 OK”而是“500 internal server error”,jQuery 不会运行你的回调函数通过 AJAX 调用给它。

    您的问题是,找不到邮件模板(视图,.vbhtml)。

    return Email("SendMail", model);
    

    上面的代码告诉控制器找到一个名为“SendMail.vbhtml”的视图。 在您的最后一张图片中,您可以看到 MVC 在哪里寻找“SendMail.vbhtml”: ~/Areas/Email/Views/Admin~/Views/Shared

    将您的视图放在其中一个文件夹中应该可以解决问题

    【讨论】:

      猜你喜欢
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      • 2023-03-30
      • 2017-08-27
      • 2013-03-13
      • 2022-01-07
      相关资源
      最近更新 更多