如何创建此操作链接?
时间:2020-03-06 14:53:55 来源:igfitidea点击:
我在使用Preview 5创建ActionLink时遇到问题。我能找到的所有文档都描述了较早的通用版本。
我正在/ jobs页上的作业列表上构建链接。每个作业都有一个guid,我想构建一个指向/ jobs / details / {guid}的链接,以便我可以显示有关该作业的详细信息。我的作业控制器具有索引控制器和详细信息控制器。 Details控制器采用向导。我已经试过了
<%= 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 })%>
那会让我再次得到。
解决方案
我们是否已在Global.asax.cs文件中定义了处理此问题的途径?默认路由为{controller} / {action} / {id}。我们正在传递" JobID",框架不会自动将其映射到" id"。我们或者需要将其更改为job.id,或者定义一条路由来显式处理这种情况。
试一下:
<%= Html.ActionLink(job.Name, "Details", new { guid = job.JobId}); %>
其中" guid"是路径中参数的实际名称。这指示路由引擎我们想要将job.JobId属性的值放入路由定义的guid参数中。