[解決済み] HTMLヘルパーでURLを生成する
2022-04-23 13:36:42
質問
通常、ASP.NETのビューでは、以下の関数を使って、URL(
<a>
):
Url.Action("Action", "Controller");
しかし、カスタムHTMLヘルパーから行う方法が見当たりません。私は
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
}
}
ヘルパー変数にはActionメソッドとGenerateLinkメソッドがありますが、これらのメソッドで生成されるのは
<a>
's. ASP.NET MVCのソースコードを少し調べてみましたが、わかりやすい方法は見つかりませんでした。
問題は、上記のUrlはビュークラスのメンバーであり、そのインスタンス化にはいくつかのコンテキストとルートマップが必要だということです(私はこれを扱いたくありませんし、どうせ扱うことになってもいません)。また、HtmlHelperクラスのインスタンスは、Urlインスタンスのコンテキスト情報のサブセットであると思われるコンテキストを持っています(しかし、私はそれを扱うことを望んでいません)。
まとめると、それは可能だと思いますが、私が見たすべての方法は、多かれ少なかれASP.NET内部のものに何らかの操作を伴うので、より良い方法はないかと考えています。
編集する 例えば、私が考える一つの可能性は、次のようなものです。
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
urlHelper.Action("Action", "Controller");
}
}
しかし、それは正しいとは思えません。UrlHelperのインスタンスを自分で扱うのは嫌なのです。もっと簡単な方法があるはずだ。
解決方法は?
htmlヘルパー拡張メソッドの中で、このようなurlヘルパーを作成することができます。
var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
var url = urlHelper.Action("Home", "Index")
関連
-
[解決済み] ブラウザによって異なるURLの最大長とは?
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] URI、URL、URNの違いは何ですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] ページを再読み込みせずにURLを変更するにはどうすればよいですか?
-
[解決済み] JavaScriptでURLをエンコードする?
-
[解決済み] jQueryで現在のURLを取得する?
-
[解決済み] アプリケーションからAndroidのWebブラウザでURLを開くにはどうすればよいですか?
-
[解決済み] PHPで完全なURLを取得する
-
[解決済み] ASP.NET MVCのモデルでUrlHelperを呼び出す
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ELMAHをASP.NET MVCの[HandleError]属性で動作させる方法は?
-
[解決済み] ASP.NET MVC ビューエンジンの比較
-
[解決済み】1つのビューに複数のモデルを表示する
-
[解決済み】Html5 data-* with asp.net mvc TextboxFor html attributes
-
[解決済み】サービスは常にDTOを返すべきですか、それともドメインモデルも返すことができますか?
-
[解決済み】リポジトリとサービスレイヤーの違い?
-
[解決済み] [Solved] ASP.NET MVCコントローラメソッドからJSON.NETでシリアライズされたcamelCase JSONを返すにはどうすればよいですか?
-
[解決済み】ViewModelのベストプラクティス
-
[解決済み】AutoMapper.CreateMapsをどこに配置するか?
-
[解決済み] ソートロジックは、モデル、ビュー、コントローラのいずれに配置するのがよいのでしょうか?[クローズド]