我有一个ASP.Net MVC 4应用程序,我正在使用这样的Url.Action助手:@Url.Action("Information", "Admin")
此页面用于添加新的和编辑管理员个人资料。 URL如下:
Adding a new: http://localhost:4935/Admin/Information
Editing Existing: http://localhost:4935/Admin/Information/5 <==Admin ID
当我在网站的Editing Existing
部分并决定要添加新的管理员时,请点击以下链接:
<a href="@Url.Action("Information", "Admin")">Add an Admin</a>
但问题是上述链接实际上是http://localhost:4935/Admin/Information/5
。只有在我编辑现有管理员的页面时才会发生这种情况。网站上的任何其他位置都可以正确链接到http://localhost:4935/Admin/Information
有没有人见过这个?
更新:
RouteConfig:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
答案 0 :(得分:86)
基于当前路由模式生成的mvc中的传出URL。
因为您的信息操作方法需要id参数,并且您的路径集合具有当前请求的URL的ID(/ Admin / Information / 5),所以id参数会自动从现有路径集合值中获取。
要解决此问题,您应该使用UrlParameter.Optional:
<a href="@Url.Action("Information", "Admin", new { id = UrlParameter.Optional })">Add an Admin</a>
答案 1 :(得分:-1)
您也可以使用以下形式:
<a href="@Url.Action("Information", "Admin", null)"> Admin</a>