2009-10-04 6 views
0

J'essaie ASP.NET MVC Framework et je voudrais créer une méthode d'assistance ajax. Fondamentalement, cette aide agirait comme ActionLink mais sans coder son texte de lien. Il est plutôt trivial d'écrire en tant que HtmlHelper, il vous suffit d'écrire votre propre version de GenerateLinkInternal. Cela ne fonctionne pas pour AjaxHelpers, car la version ajax de GenerateLink appelle indirectement ToJavascriptString (via GenerateAjaxScript) qui est interne, donc ne peut pas être appelée en dehors de l'assembly MVC. Je suis sûr que je peux réécrire le tout, mais il semble que c'est exagéré, y a-t-il un meilleur moyen? En fin de compte, je voudrais faire agir cette aide comme BeginForm pour faire le lien autour d'un bloc de HTML. Je ne l'ai pas encore regardé, mais je suppose qu'il utilise aussi ToJavascriptString. J'ai cherché sur le web et, en regardant à travers le code source MVC, je commence à me demander si je suis complètement sur la mauvaise voie.Comment obtenir le JavaScript résultant d'AjaxOptions dans ASP.NET MVC Framework?

Merci

Mise à jour: Plus je regarde ce problème, plus je pense qu'il n'y a tout simplement pas de solution. Celui qui a écrit le MVC Framework n'a pas pensé à aider les gens à écrire leurs propres aides!

Mise à jour: J'ai fini par écrire une aide qui duplique à peu près la fonctionnalité AjaxOptions.

+0

Un commentaire à votre mise à jour: Envoyez un courriel avec une suggestion sur la façon d'améliorer cela à Phil Haack (http://www.haacked.com/) qui est plus ou moins en charge de l'ASP.NET MVC Framework. Si vous êtes chanceux, ils peuvent rendre cela plus simple dans ASP.NET MVC 2 =) –

Répondre

0

Vous pourriez probablement faire beaucoup plus facile en écrivant votre propre aide à partir de zéro (par exemple ne font pas appel à l'une des méthodes Html.ActionLink()/Ajax.ActionLink()) simplement à l'aide Url.Action() à la place.

Par exemple, il est assez trivial de le faire:

public static string NonEncodedUrl(this HtmlHelper helper, 
    string linkAction, string text) 
{ 
    // Get a new UrlHelper instance in the current context 
    var url = new UrlHelper(helper.ViewContext.RequestContext); 

    return String.Format("<a href=""{0}"">{1}</a>", url.Action(linkAction), text); 
} 

Vous pouvez bien étendre ce cours avec des paramètres supplémentaires et les surcharges en fonction de vos besoins.

+0

Ce qui revient à tout réécrire! Ensuite, je devrais inclure une copie de AjaxOptions dans mon code ou réécrire la même fonctionnalité d'une autre manière. –

Questions connexes