[解決済み】HTML.ActionLinkメソッド
2022-04-04 06:39:41
質問
例えば、あるクラスがあるとします。
public class ItemController:Controller
{
public ActionResult Login(int id)
{
return View("Hi", id);
}
}
Item フォルダにないページで、ここで
ItemController
へのリンクを作成したい。
Login
メソッドを使用します。では、どの
Html.ActionLink
メソッドを使用し、どのようなパラメータを渡せばよいのでしょうか?
具体的には、以下のメソッドに置き換わるものを探しています。
Html.ActionLink(article.Title,
new { controller = "Articles", action = "Details",
id = article.ArticleID })
が、最近のASP.NET MVCでは廃止されました。
どのように解決するのですか?
あなたが欲しいのは、これだと思うんです。
ASP.NET MVC1
Html.ActionLink(article.Title,
"Login", // <-- Controller Name.
"Item", // <-- ActionMethod
new { id = article.ArticleID }, // <-- Route arguments.
null // <-- htmlArguments .. which are none. You need this value
// otherwise you call the WRONG method ...
// (refer to comments, below).
)
これは、以下のメソッドActionLinkの署名を使用しています。
public static string ActionLink(this HtmlHelper htmlHelper,
string linkText,
string controllerName,
string actionName,
object values,
object htmlAttributes)
ASP.NET MVC2
2つの引数が入れ替わりました
Html.ActionLink(article.Title,
"Item", // <-- ActionMethod
"Login", // <-- Controller Name.
new { id = article.ArticleID }, // <-- Route arguments.
null // <-- htmlArguments .. which are none. You need this value
// otherwise you call the WRONG method ...
// (refer to comments, below).
)
これは、以下のメソッドActionLinkの署名を使用しています。
public static string ActionLink(this HtmlHelper htmlHelper,
string linkText,
string actionName,
string controllerName,
object values,
object htmlAttributes)
ASP.NET MVC3+
の引数はMVC2と同じ順番ですが、idの値は不要になりました。
Html.ActionLink(article.Title,
"Item", // <-- ActionMethod
"Login", // <-- Controller Name.
new { article.ArticleID }, // <-- Route arguments.
null // <-- htmlArguments .. which are none. You need this value
// otherwise you call the WRONG method ...
// (refer to comments, below).
)
これにより、ルーティングロジックをリンクにハードコードすることを避けることができます。
<a href="/Item/Login/5">Title</a>
これで、以下のようなhtmlが出力される、と仮定します。
-
article.Title = "Title"
-
article.ArticleID = 5
- の場合、以下のルートが定義されています。
. .
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
関連
-
[解決済み] EqualsメソッドがオーバーライドされたときにGetHashCodeをオーバーライドすることが重要な理由は何ですか?
-
[解決済み] リフレクションを使ってジェネリックメソッドを呼び出すにはどうしたらいいですか?
-
[解決済み] メソッドを廃止または非推奨としてマークする方法は?
-
[解決済み] C#で同期メソッドから非同期メソッドを呼び出すには?
-
[解決済み] C#でメソッドをパラメータとして渡す
-
[解決済み] Html.ActionLinkをリンクではなく、ボタンや画像にする
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
-
[解決済み】ASP.NET MVCでファイルを表示/ダウンロードに戻す場合
-
[解決済み】jQuery Ajaxの呼び出しとHtml.AntiForgeryToken()について)
-
[解決済み] Html.ActionLink()の中にHTMLを入れ、さらにリンクテキストがない?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する