2010-04-06 46 views

回答

1

實施例附:

部分:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
<div id="subContent"> 
<fieldset> 
    <legend>Subscribe</legend>  
    <form id="subForm" method="post" action="<%= Url.Action("Subscribe") %>"> 
     <%= Html.ValidationSummary("Subscribe was unsuccessful. Please correct the errors and try again.") %> 
     <input type="text" name="name" id="name" /><%= Html.ValidationMessage("name", "*") %> 
     <input type="submit" /> 
    </form> 
</fieldset> 
</div> 
<script language="javascript" type="text/javascript"> 
$(document).ready(function() { 
    $('#subForm').live('submit', function() { 
     $.post($(this).attr('action'), $(this).serialize(), function(data) { 
      $("#subContent").replaceWith($(data)); 
     }); 
     return false; 
    }); 
}); 
</script> 

控制器:

[AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Subscribe(string name) 
     { 
      ModelState.AddModelError("name", "You must enter a name"); 
      return PartialView("SubscribeForm"); 
     } 
2

正如你所建議的最簡單的方法是把整個形式進入的局部視圖,並執行一個Ajax請求返回這部分的控制器操作。如果您在此部分內使用驗證助手,則會顯示錯誤消息。

另一種替代方法是發佈到控制器的操作,該操作將所有錯誤消息放入JSON數組中並將其傳遞給視圖。然後使用JavaScript,您可以循環顯示錯誤消息並顯示它們。

+0

感謝您的答覆。 我更喜歡選項1.我是否需要在jQuery響應中做任何事情? ('#subForm')。live('submit',function(){ $ .post($(this).attr('action'),$(this).serialize(),function(data){ //此處需要的任何內容? }); return false; }); – Chev 2010-04-07 10:15:40