2010-12-10 3 views
0

code ci-dessous est prêt à tester: MVC3Arrêtez de rafraîchir une fois un message de succès du serveur reçu du contrôleur

Le problème est quand je e.preventDefault activer(); que les erreurs individuelles n'apparaissent pas en face de chaque contrôle généré par ValidationMessageFor et en affichant lorsque e.preventDefault(); est autorisé. Toutes les erreurs fonctionnent correctement, mais une fois le code de traitement et un message réussi retour du côté serveur font toute la page postback/REFRESH :(

Question:.Comment j'arrête toute la page de Refresh/Postback si e. preventDefault(), est activé et obtenir message de réussite du serveur

<script type="text/javascript"> 
    $(function() { 
     $("#personCreate").click(function (e) { 
      //e.preventDefault(); -------> Here is the problem 

      var profile = { 
       FirstName: $("#FirstName").val(), 
       LastName: $("#LastName").val() 
      }; 


      $.ajax({ 
       url: '/Test/save', 
       type: 'POST', 
       dataType: 'json', 
       data: JSON.stringify(profile), 
       contentType: 'application/json; charset=utf-8', 

       //beforeSend: function() { $("#saveStatus").html("Saving").show(); }, 
       //complete: function() { $("#saveStatus").html("Saving").hide(); }, 
       success: function (data) { 
        // get the result and do some magic with it 
        var message = data.Message; 
        $("#resultMessage").html(message); 
       } 
      }); 
     }); 
    }); 

</script> 

// Code contrôleur

[HttpPost] 
public ActionResult Save(CreateViewModel userVm) 
{ 
    if (ModelState.IsValid) 
    { 
     return Json(new CreateViewModel { Message = "Passed" }); 
    } 
    else 
    { 
     return Json(new CreateViewModel { Message = "Failed" }); 
    } 
} 
?

//Create.cshtml

<span id="saveStatus"></span> 

@using(Html.BeginForm()) 
{ 


     <fieldset> 
     <legend>Contact Information</legend> 
     <div> 
      <table class="form-spacing">       
       <tr> 
        <td class="cell-one">* @Html.LabelFor(model => model.FirstName) :</td> 
        <td class="cell-two">@Html.TextBoxFor(model => model.FirstName, new { @class = "big-field", tabindex = "1" })</td> 
        <td class="cell-three" >@Html.ValidationMessageFor(model => model.FirstName)</td>   
       </tr> 
       <tr> 
        <td class="cell-one">* @Html.LabelFor(model => model.LastName) :</td> 
        <td class="cell-two">@Html.TextBoxFor(model => model.LastName, new { @class = "big-field", tabindex = "2" })</td> 
        <td class="cell-three" >@Html.ValidationMessageFor(model => model.LastName)</td>    
       </tr> 
      </table> 
     </div> 
    </fieldset> 

    <p> 
     <input type="submit" value="Save" id="personCreate" /> 
    </p> 

} 

    <div> 
     <span id="resultMessage"></span> 
    </div> 

Répondre

Questions connexes