2010-10-29 157 views
0

我有一个ajax的形式,像这样:MVC Ajax.BeginForm

<% using (Ajax.BeginForm("Comments", "Comments", null, new AjaxOptions {UpdateTargetId="main", OnSuccess="createSuccess" }, new{ @id="main"})) {%> 
    <%: Html.ValidationSummary(true, "errors") %> 

    <fieldset> 
     <legend>Fields</legend> 

     <div class="editor-label"> 
      <%: Html.LabelFor(model => model.Body) %> 
     </div> 
     <div class="editor-field"> 
      <%: Html.TextBoxFor(model => model.Body) %> 
      <%: Html.ValidationMessageFor(model => model.Body) %> 
     </div> 

     <div class="editor-label"> 
      <%: Html.LabelFor(model => model.Name) %> 
     </div> 
     <div class="editor-field"> 
      <%: Html.TextBoxFor(model => model.Name) %> 
      <%: Html.ValidationMessageFor(model => model.Name) %> 
     </div> 

     <p> 
      <input type="submit" value="Submit" /> 
     </p> 
    </fieldset> 

<% } %> 

<div id="Success" style="display:none;"> 
    New entry successfully entered 
</div> 

<script type="text/javascript"> 
function createSuccess(context) 
{ 
    if ($(".validation-summary-errors").length > 0) { 
     return; 
    } 

    $('#main').clearForm() 
    $('#Success').show(); 
} 

这是检查,如果表单已成功提交的正确方法?如果验证摘要的类名称更改会怎么样?有没有更好的办法?

谢谢

回答

0

你绝对是在正确的轨道上。需要知道的重要一点是,为了填充服务器端验证消息,您需要使用Comments操作返回包含上面表单的部分,因为当ajax调用返回时,它将替换具有id =“主要“(你的表格),以及行动的结果。