69

我有一个 ASP.Net MVC 4 应用程序,并且正在使用 Url.Action 助手,如下所示:@Url.Action("Information", "Admin")

此页面用于添加新的和编辑管理员配置文件。网址如下:

 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

有没有其他人看过这个?

更新:

路由配置:

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );    
4

2 回答 2

111

基于当前路由模式生成的 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>
于 2013-10-01T07:59:41.403 回答
-4

您也可以以这种形式使用:

<a href="@Url.Action("Information", "Admin", null)"> Admin</a>

于 2017-09-25T14:07:17.147 回答