asp.net mvc Html.ActionLink()保留我不想要的路由值

cod*_*tte 44 asp.net-mvc actionlink

我在视图中有以下ActionLink

<%= Html.ActionLink("LinkText", "Action", "Controller"); %>
Run Code Online (Sandbox Code Playgroud)

并创建以下URL http://mywebsite.com/Controller/Action

假设我在最后添加一个ID,如下所示:http://mywebsite.com/Controller/Action/53并导航到该页面.在这个页面上,我有上面指定的标记.现在,当我查看它创建的URL时,它看起来像这样:

http://mywebsite.com/Controller/Action/53(注意添加ID)

但我希望它删除ID并看起来像它原来的那样,如http://mywebsite.com/Controller/Action(此处没有注释ID)

我有什么想法可以解决这个问题?我不想使用硬编码的URL,因为我的控制器/操作可能会改变.

cod*_*tte 45

解决方案是指定我自己的路由值(下面的第三个参数)

<%= Html.ActionLink("LinkText", "Action", "Controller", 
    new { id=string.Empty }, null) %>
Run Code Online (Sandbox Code Playgroud)


Bri*_*hon 13

听起来你需要注册第二个"Action Only"路由并使用Html.RouteLink().首先在应用程序启动时注册这样的路由:

routes.MapRoute("ActionOnly", "{controller}/{action}", 
   new { controller = "Home", action = "Index" } );
Run Code Online (Sandbox Code Playgroud)

然后使用以下代替ActionLink来创建这些链接:

Html.RouteLink("About","ActionOnly")
Run Code Online (Sandbox Code Playgroud)


Gar*_*ler 10

问题是内置方法从您当前使用的URL以及您提供的内容中获取输入.你可以试试这个:

<%= Html.ActionLink("LinkText", "Action", "Controller", new { id = ""}) %>
Run Code Online (Sandbox Code Playgroud)

那应该手动擦除id参数.