2013-02-19 34 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

把這些文件夾中的一個視圖應該解決這個問題