2008-11-20 7 views
1

En utilisant l'assistant Ajax.BeginForm() dans ASP.Net MVC, je peux passer des options avec des noms de différentes fonctions, par exemple un pour exécuter OnBegin, un pour OnSuccess etc. Comment cela fonctionne-t-il "sous le capot"? La raison pour laquelle je demande est que j'étend ceci pour fournir une alternative basée sur JQuery, et j'ai besoin de comprendre comment obtenir que les noms de méthodes soient spécifiés dans une chaîne JSON pour les appeler réellement.Comment imiter les fonctions de délégué ASP.NET AjaxOptions?

La classe AjaxOptions a une méthode de sérialisation, dans laquelle il enveloppe le nom de la méthode de la manière suivante (dans cet exemple, la AjaxOptionsOnSuccess propriété est définie sur mySuccessFunction(p):

onSuccess: Function.createDelegate(this, mySuccessFunction(p))

je produis mon propre JQueryAjaxOptions classe, qui sérialise de la même façon (mais avec quelques options supplémentaires disponibles) .As asically, ce que j'ai disponible dans ma méthode pour poster le formulaire est la propriété ci-dessus dans le cadre d'un objet json, et je dois être capable de appeler la fonction

Comment puis-je accomplir cela?

Répondre

1

Je trouve la réponse à mon problème:

Qu'est-il vraiment bouilli jusqu'à, exécutait une ligne de code contenu dans une variable de chaîne. Cela peut facilement être fait en utilisant la syntaxe 'eval (x)'. L'exemple suivant fonctionne pour la propriété onSuccess:

eval(settings.onSuccess)

Parfois, il vous suffit de penser un pas en arrière pour réaliser ce que vous essayez de faire, et comment il est facile =)

Questions connexes