1

我在使用 Preview 5 创建 ActionLink 时遇到问题。我能找到的所有文档都描述了旧的通用版本。

我正在 /jobs 页面上的工作列表上构建链接。每个工作都有一个 guid,我想构建一个指向 /jobs/details/{guid} 的链接,以便显示有关该工作的详细信息。我的作业控制器有一个索引控制器和一个详细信息控制器。详细信息控制器需要一个向导。我试过这个

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

但是,这给了我网址“/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 })%>

那会再次吸引我。

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}。您正在传递“JobID”,框架不会自动映射到“id”。您要么需要将其更改为 job.id,要么定义一个路由来明确处理这种情况。

于 2008-09-29T21:48:08.813 回答