このアクションリンクを作成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/150845

  •  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に変更するか、このケースを明示的に処理するルートを定義する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top