Normalement, dans un ASP.NET la vue que l'on pourrait utiliser la fonction suivante pour obtenir une URL (pas un <a>
):
Url.Action("Action", "Controller");
Cependant, je ne trouve pas comment le faire d'une assistance HTML personnalisée. J'ai
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
}
}
L'aide de la variable a de l'Action et de GenerateLink méthodes, mais ils génèrent <a>
'. J'ai fait quelques recherches dans le ASP.NET MVC code source, mais je ne pouvais pas trouver une manière simple.
Le problème est que l'Url ci-dessus est un membre de la classe de la vue et de son instanciation, il a besoin de quelques contextes et des cartes d'itinéraires (que je ne veux pas avoir affaire avec et je ne suis pas censé en tout cas). Sinon, l'instance de la classe HtmlHelper a aussi le contexte qui je suppose est soit souper de sous-ensemble de l'information de contexte de l'Url de l'instance (mais encore une fois je ne veux pas traiter avec elle).
En résumé, je pense que c'est possible, mais depuis toutes les façons que je pouvais voir, impliquent la manipulation avec plus ou moins interne ASP.NET des trucs, je me demande si il ya une meilleure façon.
Edit: Par exemple, une solution que je vois serait:
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
urlHelper.Action("Action", "Controller");
}
}
Mais il ne semble pas opportun. Je ne veux pas avoir affaire avec les instances de UrlHelper moi-même. Il doit y avoir un moyen plus facile.