如何创建此操作链接?

时间:2008-09-29 21:42:39

标签: asp.net-mvc actionlink

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

我正在页面/作业上的作业列表上构建链接。每个工作都有一个guid,我想构建一个指向/ jobs / details / {guid}的链接,这样我就可以显示有关该工作的详细信息。我的作业控制器有一个索引控制器和一个细节控制器。详细信息控制器需要一个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

所以,它令人困惑的路线。我在网站管理员之前移动了我的工作路线定义,现在可以使用了。显然,我的路线定义是SUCK。我需要阅读更多的例子。

旁注,我的链接没有显示,并且快速表没有工作(无法快速观察匿名类型的表达式),这使得更难以弄清楚这里发生了什么。事实证明,由于一个非常小的错字,行动链接没有显示出来:

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

那会再次让我感动。

2 个答案:

答案 0 :(得分:3)

试一试:

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

其中“guid”是路线中参数的实际名称。这指示路由引擎要将job.JobId属性的值放入路由定义的guid参数中。

答案 1 :(得分:1)

您是否在Global.asax.cs文件中定义了处理此问题的路由?默认路由为{controller} / {action} / {id}。您正在传递“JobID”,框架不会自动映射到“id”。您需要将其更改为job.id或定义路由以明确处理此案例。