URL.Action()包括路由值
我有一个ASP.Net MVC 4应用程序,并使用Url.Action这样的帮手: @Url.Action("Information", "Admin")
此页面用于添加新的和编辑pipe理员configuration文件。 url如下:
Adding a new: http://localhost:4935/Admin/Information Editing Existing: http://localhost:4935/Admin/Information/5 <==Admin ID
当我在网站的Editing Existing
部分,并决定我想添加一个新的pipe理员,我点击以下链接:
<a href="@Url.Action("Information", "Admin")">Add an Admin</a>
但是,上面的链接实际上是http://localhost:4935/Admin/Information/5
。 只有当我在该页面中编辑现有的pipe理员时才会发生这种情况。 在网站上的任何地方,它都正确地链接到http://localhost:4935/Admin/Information
有没有人看过这个?
更新:
RouteConfig:
routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
在mvc中根据当前路由模式生成的外发URL。
因为你的信息动作方法需要id参数,而你的路由集合有你当前请求的url(/ Admin / Information / 5)的id,id参数是从现有路由集合值中自动获得的。
要解决这个问题,你应该使用UrlParameter.Optional:
<a href="@Url.Action("Information", "Admin", new { id = UrlParameter.Optional })">Add an Admin</a>
你也可以使用这种forms:
<a href="@Url.Action("Information", "Admin", null)"> Admin</a>