<a>
ではなく)を取得できます。
Url.Action("Action", "Controller");
ただし、カスタムHTMLヘルパーから行う方法はわかりません。私は
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
}
}
ヘルパー変数はアクションと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のインスタンスを自分で扱いたいとは思わない。より簡単な方法が必要です。
これは簡単な例ですが、ここに示した例では、HtmlHelperではなくUrlHelperを拡張しています。あなたの本当のコードは両方とも必要かもしれません。 –
申し訳ありませんが、私はもっと明確にすべきでした。私は拡張メソッドでHTMLレンダリングをいくつかやりたかったので、URLの生成が必要でした。 –