2009-04-29 57 views
0

我有一個使用ASP.NET MVC收集數據的表單。它看起來像這樣:ASP.NET中的Ajax表單MVC

 

[AcceptVerbs(HttpVerbs.Post)] 
[AutoValidate] 
public ActionResult Contact(ContactMessage msg) 
{ 
    if(ModelState.IsValid) 
    { 
     try 
     { 
      this.messengerService.SendMail(msg); 
      RedirectToAction("Index"); 
     } 
     catch (Exception ex) 
     { 
      ModelState.AddUnhandledError(ex); 
     } 
    } 

    return View(msg); 
} 
 

我使用asp.net mvc的驗證和模型狀態驗證照顧無效規則的消息顯示。這一切都在工作。

現在我想使用ajax表單提交操作,並在操作成功完成時顯示成功消息。我嘗試使用下面的代碼,並且它在操作成功時工作,但是當它失敗時(模型有錯誤),整個頁面再次呈現在顯示成功消息的DIV中!這可能嗎?

 

[AcceptVerbs(HttpVerbs.Post)] 
[AutoValidate] 
public ActionResult Contact(ContactMessage msg) 
{ 
    if(ModelState.IsValid) 
    { 
     try 
     { 
      this.messengerService.SendMail(msg); 
      return Content("Message sent"); 
     } 
     catch (Exception ex) 
     { 
      ModelState.AddUnhandledError(ex); 
     } 
    } 

    return View(msg); 
} 
 

回答

2

你的問題是最後一行返回普通視圖。

試試這個:

[AcceptVerbs(HttpVerbs.Post)] 
[AutoValidate] 
public JsonResult Contact(ContactMessage msg) 
{ 
    if(ModelState.IsValid) 
    { 
     try 
     { 
      this.messengerService.SendMail(msg); 
      return Json("Message sent"); 
     } 
     catch (Exception ex) 
     { 
      ModelState.AddUnhandledError(ex); 
     } 
    } 

    return Json("There were model errors"); 
}