このアクションリンクを作成するにはどうすればよいですか?
-
02-07-2019 - |
質問
プレビュー5を使用してActionLinkを作成する際に問題があります。見つけることができるすべてのドキュメントは、古い汎用バージョンについて説明しています。
/ jobsページのジョブのリストにリンクを作成しています。各ジョブにはguidがあり、ジョブに関する詳細を表示できるように/ jobs / details / {guid}へのリンクを作成したいと思います。ジョブコントローラーには、インデックスコントローラーと詳細コントローラーがあります。 DetailsコントローラーはGUIDを受け取ります。私はこれを試しました
<%= Html.ActionLink(job.Name, "Details", job.JobId); %>
ただし、それによりURL「quot; / jobs / details」が得られます。ここに何が欠けていますか?
あなたの助けを借りて解決しました。
ルート(キャッチオールルートの前に追加):
routes.Add(new Route("Jobs/Details/{id}", new MvcRouteHandler())
{
Defaults = new RouteValueDictionary(new
{
controller = "Jobs",
action = "Details",
id = new Guid()
}
});
アクションリンク:
<%= Html.ActionLink(job.Name, "Details", new { id = job.JobId }) %>
htmlアンカーの結果:
http:// localhost:3570 / WebsiteAdministration / Details ?id = 2db8cee5-3c56-4861-aae9-a34546ee2113
そのため、混乱するルート。ウェブサイトの管理者の前にジョブルートの定義を移動しましたが、現在は機能しています。明らかに、私のルート定義は成功します。もっと例を読む必要があります。
補足として、私のリンクは表示されず、クイックウォッチは機能しませんでした(匿名型の式をクイックウォッチできません)。タイプミスが非常に少ないため、アクションリンクが表示されないことが判明しました。
<% Html.ActionLink(job.Name, "Details", new { id = job.JobId })%>
それはまた私を捕まえます。
解決
これを試してみましょう:
<%= Html.ActionLink(job.Name, "Details", new { guid = job.JobId}); %>
「ガイド」の場所ルート内のパラメーターの実際の名前です。これは、ルーティングエンジンに、job.JobIdプロパティの値をルート定義のguidパラメーターに配置するよう指示します。
他のヒント
Global.asax.csファイルでこれを処理するルートを定義しましたか?デフォルトのルートは{controller} / {action} / {id}です。フレームワークが「id」にマッピングしない「JobID」を渡します。自動的に。これをjob.idに変更するか、このケースを明示的に処理するルートを定義する必要があります。