in einer ASP.NET-Ansicht Normalerweise man die folgende Funktion eine URL verwenden könnte (keine <a>
) zu erhalten:generiert URL in HTML-Hilfs
Url.Action("Action", "Controller");
aber ich kann nicht finden, wie es von einer Gewohnheit zu tun HTML-Helfer. Ich habe
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
}
}
Die Helfer Variable, um die Aktion und GenerateLink Methoden, aber sie erzeugen <a>
‚s. Ich habe etwas im ASP.NET MVC Quellcode gegraben, aber ich konnte keinen direkten Weg finden.
Das Problem ist, dass die URL oben ein Mitglied der View-Klasse ist und für ihre Instantiierung einige Kontexte und Routenkarten benötigt (mit denen ich mich nicht befassen will und die ich sowieso nicht sollte). Alternativ hat die Instanz der HtmlHelper-Klasse auch einen Kontext, von dem ich anspreche, dass er entweder ein Supper einer Teilmenge der Kontextinformationen der Url-Instanz ist (aber ich möchte das auch nicht behandeln).
Zusammenfassend denke ich, dass es möglich ist, aber da alle Möglichkeiten, die ich sehen könnte, eine Manipulation mit mehr oder weniger internen ASP.NET-Sachen beinhalten, frage ich mich, ob es einen besseren Weg gibt.
Edit: Zum Beispiel ich eine Möglichkeit sehen wäre:
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
urlHelper.Action("Action", "Controller");
}
}
Aber es scheint nicht richtig. Ich möchte mich nicht mit Instanzen von UrlHelper befassen. Es muss einen leichteren Weg geben.
Ich weiß, dies ist ein vereinfachtes Beispiel, aber für das Beispiel würde ich UrlHelper statt HtmlHelper erweitern. Ihr richtiger Code benötigt jedoch möglicherweise beide. –
Entschuldigung, ich hätte klarer sein sollen: Ich wollte etwas HTML-Rendering in der Erweiterungsmethode machen und ich musste URLs dafür generieren. –