2009-04-29 19 views
0

ASP.NET MVCを使用してデータを収集するフォームがあります。それは次のようになります。私は、無効なルールメッセージの世話をするためにasp.net MVCの検証とモデル状態の検証を使用していASP.NET MVCのAjaxフォーム

 

[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); 
} 
 

表示されています。それはすべて働いている。

これで、アクションが正常に完了したら、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"); 
}