2013-02-19 51 views
0

JQuery的面对的问题,同时提交表单 - “500内部服务器错误”

$(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内部服务器错误”

enter image description here

更新 - 1

正如你可以在局部视图看到 - 我提的HTML.BeginForm的行动,也有我提交表格。我认为请求已被提交多次?

+1

你需要指定错误是什么。开发工具中的响应标签应该显示它。 – 2013-02-19 12:25:17

+0

更新了我的查询。请检查。 – SMC 2013-02-19 12:28:11

回答

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

0

当您使用jQuery和AJAX时,MVC会将任何错误页面发送回客户端,但由于状态码不是“200 OK”而是“500内部服务器错误”,jQuery将不会运行回调函数你给了AJAX调用。

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

​​

上面的代码告诉Controller找到一个名为“SendMail.vbhtml”的视图。 在你过去的图片可以看到,在MVC找了“SendMail.vbhtml”: ~/Areas/Email/Views/Admin~/Views/Shared

把这些文件夹中的一个视图应该解决这个问题