如何创建此操作链接?

时间: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参数中。