2017-01-31 1 views
1

J'utilise Ajax.BeginForm dans ma vue partielle pour soumettre les données.MVC - Trigger soumettre un événement de vue partielle dans la vue principale en utilisant JQuery

Vue partielle - _getCategoryMaster.cs

<div> 
    @using (Ajax.BeginForm("Submit", "CategoryMasterDataEntry", new AjaxOptions { OnSuccess = "OnDatatSuccess", OnFailure = "OnDataFailure", HttpMethod = "POST" }, new { enctype = "multipart/form-data" })) 
    { 
      <div style="float:left;width:100%;"> 
       <hr class="horizontal-line-bottom" /> 
       <div class="form-buttons tab-footer"> 
        <button class="btn btn-md" type="submit" id="saveData" @if (TempData["DisplayAccess"].ToString() == "view") { <text> disabled </text> }>SAVE</button> 
       </div> 
      </div> 
    } 
</div> 

Maintenant, je suis en train d'appeler cet événement de présenter mon point de vue de parent sur l'événement clic du lien de Jquery

Parent Vue -

<html> 
<head> 
<script type="text/javascript"> 
$(document).on('click', '.getProducts', function (e) { 
     alert("Start"); 

     $('form#ajaxForm').trigger('submit'); 

     alert("End"); 
</script> 
</head> 
<body> 
<a id="anchId" href="javascript:void(0);" class="getProducts"> 
<img src="~/Images/bullets.png" class="bullet-image" /> 
    <span class="menu-text">LinkName</span> 
    </a> 
</body> 
</html> 

Mais ce n'est pas le fait de soumettre l'événement de la vue partielle. Je reçois ces alertes (début et fin). Mais il ne tire pas cet événement de soumission.

Qu'est-ce que je fais mal ici?

Répondre

3

Vous n'avez pas de formulaire avec id="ajaxForm". Remplacer new { enctype = "multipart/form-data" } (ce qui est inutile, puisque vous ne pouvez pas envoyer des fichiers en utilisant Ajax.BeginForm()) avec new { id= "ajaxForm" }

@using (Ajax.BeginForm("Submit", "...", new AjaxOptions { ... }, new { id = "ajaxForm" })) 

ou simplement utiliser $('form').trigger('submit');

+0

Thankss beaucoup !!!! –

+0

Pouvez-vous répondre en utilisant 'Ajax.BeginForm' pourquoi' event.stopPropagation(); 'et' e.preventDefault(); 'ne fonctionne pas sur' OnBegin = "return MyBeginFunction (event)" 'mais' return false; 'fonctionne. [ici] (https://stackoverflow.com/a/48203120/2218697) est ma réponse. – stom

+0

@stom, 'OnBegin()' est une fonction appelée immédiatement avant l'appel ajax actuel. Si elle renvoie 'false', l'appel ajax suivant n'est pas exécuté. Il n'y a pas d''événement' qui est géré. Et dans votre réponse, vous ne pouvez pas appeler '$ ('Ajax_form'). Trigger ('submit');' inside 'OnBegin()' - cela créerait une boucle infinie –