【问题标题】:ActionLink Includes Current {id} in URLActionLink 在 URL 中包含当前 {id}
【发布时间】:2012-06-12 21:41:24
【问题描述】:

我的浏览器中当前显示的页面是:http://localhost:19255/Object/Browse/1

此页面上的链接创建为:@Html.ActionLink("...", "Browse", "Object")

但是生成的链接其实是:/Object/Browse/1

我对正在发生的事情的理解是 MVC 看到我的路线有一个 {id} 部分,我没有提供。所以它继续并包含了当前页面中的 {id} 部分。

很公平,但是没有它我如何创建链接呢?我尝试了nullnew { id = null },但都没有成功。

【问题讨论】:

  • 所以你想要一个没有参数的动作链接,我听到的是这样吗?
  • 没有看到创建/Object/Browse 视图的操作我不确定你怎么看不到id,因为看起来视图需要一个值来呈现视图以查看对象那id。那有意义吗?大声笑
  • 我想看看你的默认路线...
  • 我们没有对构建 MVC 应用程序时自动创建的路由进行任何更改。这是完全标准的。

标签: c# asp.net-mvc routing


【解决方案1】:

虽然以下都不起作用:

@Html.ActionLink("...", "Browse", "Object", null)              // Has no effect
@Html.ActionLink("...", "Browse", "Object", new { id = null }) // Error

以下解决了这个问题:

@Html.ActionLink("...", "Browse", "Object", new { id = "" })   // No ID is passed

【讨论】:

【解决方案2】:

我相信 MVC 会直接从模型中提取此 ID,因为您没有指定它。我以前见过这个,但我现在没有时间验证它。

在呈现该链接之前尝试覆盖@Model.Id 以查看它是否来自该链接。然后,我认为,您可以将 Id 值隐藏在一个新变量中,以备不时之需,并设置 @Model.Id = null。有点像黑客......当然:)

【讨论】:

  • 我的模特没有Id 成员。它必须以某种方式从视图本身中获取它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-29
  • 2020-03-20
  • 2010-09-29
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
相关资源
最近更新 更多