1

Preview 5 を使用して ActionLink を作成する際に問題が発生しています。私が見つけることができるすべてのドキュメントは、古い汎用バージョンについて説明しています。

ページ /jobs の求人リストにリンクを作成しています。各ジョブには GUID があり、ジョブの詳細を表示できるように /jobs/details/{guid} へのリンクを作成したいと考えています。私のジョブ コントローラーには、Index コントローラーと Details コントローラーがあります。Details コントローラーは GUID を受け取ります。私はこれを試しました

<%= Html.ActionLink(job.Name, "Details", job.JobId); %>

ただし、これにより「/jobs/details」という URL が表示されます。ここで何が欠けていますか?


あなたの助けで解決しました。

ルート (キャッチオール ルートの前に追加):

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

だから、その紛らわしいルート。ジョブ ルート定義を Web サイト管理者の前に移動したところ、現在は機能しています。明らかに、私のルート定義はダメです。もっと例を読む必要があります。

ちなみに、私のリンクは表示されず、クイックウォッチも機能していませんでした (匿名型の式をクイックウォッチすることはできません)。非常に小さなタイプミスが原因で、アクション リンクが表示されないことが判明しました。

<% Html.ActionLink(job.Name, "Details", new { id = job.JobId })%>

それはまた私を得るつもりです。

4

2 に答える 2

3

これを試してみてください:

<%= Html.ActionLink(job.Name, "Details", new { guid = job.JobId}); %>

「guid」は、ルート内のパラメーターの実際の名前です。これにより、ルーティング エンジンに対して、job.JobId プロパティの値をルート定義の guid パラメーターに配置するように指示されます。

于 2008-09-29T21:48:46.313 に答える
1

Global.asax.cs ファイルでこれを処理するルートを定義しましたか? デフォルトのルートは {controller}/{action}/{id} です。フレームワークが自動的に「id」にマップしない「JobID」を渡しています。これを job.id に変更するか、このケースを明示的に処理するルートを定義する必要があります。

于 2008-09-29T21:48:08.813 に答える