C# ActionLink在URL中包含当前{id}

C# ActionLink在URL中包含当前{id},c#,asp.net-mvc,routing,C#,Asp.net Mvc,Routing,“我的浏览器”中当前显示的页面为:http://localhost:19255/Object/Browse/1 此页面上的链接是通过以下方式创建的:@Html.ActionLink(“…”、“浏览”、“对象”) 但生成的链接实际上是:/Object/Browse/1 我对发生的事情的理解是MVC看到我的路线有一个{id}部分,我没有提供。因此,它继续前进并包含了当前页面中的{id}部分 很公平,但是如果没有它,我如何创建链接呢?我尝试了null,和new{id=null},但都没有成功。我相信M

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

此页面上的链接是通过以下方式创建的:
@Html.ActionLink(“…”、“浏览”、“对象”)

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

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


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

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


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

而以下两项都不起作用:

@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

所以你想要一个没有参数的动作链接,是不是我听说的?如果没有看到创建
/Object/Browse
视图的动作,我不确定你怎么看不到
id
,因为看起来该视图需要一个值来呈现视图,以查看具有该
id
的对象。这有意义吗?lolI希望看到您的默认路由…我们在构建MVC应用程序时没有对自动创建的路由进行任何更改。这是完全标准的。我的模型没有
Id
成员。它一定是从视图本身获得的。如果您想深入了解原因,可以在此处找到ASP.NET MVC源代码: