在MVC中的url中显示“ID”字样

时间:2016-12-23 10:43:38

标签: asp.net-mvc

<a href="@Url.Action("UpdateCase", "Receptionist", new { id = @Model[SrNo].Patient_ID })" class="btn btn-danger">Edit</a>

在href中,我将id作为参数传递。所以当我重定向到行动时,我有以下网址

  

http://localhost:17888/Receptionist/UpdateCase/12

但我想在网址中看到id字。

  

http://localhost:17888/Receptionist/UpdateCase?id=12

RouteConfig

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

如果我更改参数名称而不是id,则它正在运行。只有ID在网址中不可见

UpdateCase操作:

[Authorize]
[HttpGet]
public ActionResult UpdateCase(Int64 id)
{

}

2 个答案:

答案 0 :(得分:2)

可能的解决方案之一是将路线配置更改为

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

在这种情况下,您在路由表中没有名称为id的参数,因此Url.Action无法使用它,因此您将获得预期的网址。

但要小心并检查其他人的行动

答案 1 :(得分:0)

如果未在网址中指定参数,则会添加问号,因此从路线中删除{id}会强制将问号添加到网址中。

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