2010-10-29 2 views
0

J'ai une forme ajax comme ceci: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(); 
} 

Est-ce la bonne façon de vérifier si le formulaire a été soumis avec succès? Que faire si le nom de la classe pour validation-résumé change? Y a-t-il un meilleur moyen?

merci

Répondre

0

Vous êtes définitivement sur la bonne voie. La chose importante à savoir, c'est que pour que les messages de validation côté serveur se remplissent, vous avez besoin de l'action Commentaires pour retourner un partiel contenant le formulaire ci-dessus, car lorsque l'appel ajax retournera, il remplacera tout id = " main "(votre forme), avec le résultat de l'action.

Questions connexes