Url.Action生成查询字符串,任何方式生成完整的URL?

Cam*_* W. 5 asp.net-mvc razor

目前在我的项目中,我使用@ Url.Action在锚标签的href属性中创建链接.

例如:

<a href='@Url.Action("Index", "Home", new { id = 10 })' id="btn">Click</a>
Run Code Online (Sandbox Code Playgroud)

这工作正常,但产生的URL是......

/home/index?id=10
Run Code Online (Sandbox Code Playgroud)

有没有办法返回网址

/home/index/10
Run Code Online (Sandbox Code Playgroud)

对于SEO和审美目的?我使用id和number作为占位符 - 在实际应用程序中它可以并将使用字符串代替(所以...

<a href='@Url.Action("Index", "Home", new { name="test" })' id="btn">Click</a>
Run Code Online (Sandbox Code Playgroud)

返回网址

/home/index/test
Run Code Online (Sandbox Code Playgroud)

Dav*_*idG 3

您需要确保路由正确。确保您有这样的路线:

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

对于您的“真实应用程序”,当您使用名为 的参数时,name您将需要一个如下所示的参数:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{name}",
    defaults: new { controller = "Home", action = "Index" });
Run Code Online (Sandbox Code Playgroud)