通常、ASP.NETビューでは、次の関数を使用して(ではなく<a>
)URLを取得できます。
Url.Action("Action", "Controller");
しかし、カスタムHTMLヘルパーからそれを行う方法を見つけることができません。私が持っています
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
}
}
ヘルパー変数にはActionメソッドとGenerateLinkメソッドがありますが、それらはを生成し<a>
ます。ASP.NET MVCソースコードを掘り下げましたが、簡単な方法が見つかりませんでした。
問題は、上のUrlがビュークラスのメンバーであり、そのインスタンス化のためにいくつかのコンテキストとルートマップが必要であることです(これについては扱いたくないので、とにかく想定していません)。あるいは、HtmlHelperクラスのインスタンスにもいくつかのコンテキストがあります。これは、Urlインスタンスのコンテキスト情報のサブセットの夕食のいずれかであると想定しています(ただし、これについては扱いたくありません)。
要約すると、それは可能だと思いますが、私が見ることができるすべての方法は、多少の内部ASP.NET要素による操作を伴うため、より良い方法があるかどうか疑問に思います。
編集:たとえば、私が見る可能性の1つは次のとおりです。
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
urlHelper.Action("Action", "Controller");
}
}
しかし、それは正しくないようです。私はUrlHelperのインスタンスを自分で処理したくありません。もっと簡単な方法があるはずです。