2014-05-21 1 views
1

Y at-il un moyen d'affecter plusieurs fonctions javascript à OnBegin dans Ajax.BeginForm(), tout en passant certains paramètres (par exemple xhr et status) à l'un d'entre eux, par ex.Attribuer plus d'une fonction à OnBeign

@using (@Ajax.BeginForm("Action", "Controller", new AjaxOptions 
{ 
    UpdateTargetId = "convertContractorToAnEmployeeFormAjaxContainer", 
    OnBegin = "(function(xhr, status){ oneFunction(xhr, status); anotherOne();})();" 
})) 
{ 
    //... 
} 

Lorsque vous fournissez un nom de fonction pour OnBegin vous avez trois arguments xhr, status, error. Comment puis-je gérer en ligne?

+0

Si je suis "OnBegin" n'a qu'un seul argument, 'xhr'. –

Répondre

3

Vous pouvez le faire en enveloppant vos appels dans une fonction anonyme.

Par exemple:

Vues/Accueil/Index.cshtml:

<div id='ajaxStatus'></div> 
@using (@Ajax.BeginForm("Test", "Home", new AjaxOptions 
    { 
     OnBegin = "new function(){func1(xhr); func2();}", 
     UpdateTargetId = "ajaxStatus", 
    }) 
) 
{ 
    <input type='submit' /> 
} 

@section Scripts{ 
    @Scripts.Render("~/Scripts/jquery.js") 
    @Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.js") 

    <script type="text/javascript"> 
     function func1(xhr) { 
      console.log("xhr: ", xhr); 
     } 

     function func2(){ 
      console.log("func2 called"); 
     } 

    </script> 
} 

HomeController.cs:

public ActionResult Index() 
{ 
    return View(); 
} 

public MvcHtmlString Test(object form) 
{ 
    return new MvcHtmlString("success"); 
} 

De plus, une petite note: l'argument disponible de OnBegin est xhr.

Voici une liste des arguments disponibles pour chacune des propriétés de l'événement AjaxOption:

+0

Oui, c'est correct. J'étais confus parce que quand vous fournissez seulement le nom de la fonction alors 'jquery.unobtrusive-ajax.js' assigne l'objet' arguments' à cette fonction. Dans mon cas, les 'arguments' contiennent deux éléments que j'utilise tous les deux maintenant. Mais quand vous fournissez une fonction anonyme comme ci-dessus, je peux obtenir seulement xhr: -/Je pense que je dois contourner cela en écrivant une autre fonction et dans celui-là, appelez les deux: - / – eldi

Questions connexes