通常、ASP.NETビューでは、次の関数を使用してURL(ではなく<a>
)を取得できます。
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のインスタンスを自分で処理したくありません。もっと簡単な方法があるはずです。