在mvc中更改生成的详细信息视图
本文关键字:详细信息 视图 mvc | 更新日期: 2023-09-27 18:26:21
所以我有一个名为Movies的Views文件夹。里面我有索引,创建,删除,详细信息,编辑。(自动生成)。现在,当我单击详细信息按钮时,URL变为xx.com/Movies/details/2。该数字表示数据库中的ID。有没有办法显示标题而不是ID?
当然可以。你只需要更新路线。在您的Route Config文件中,您会注意到这样一行:
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
在这里,您需要将其更改为
routes.MapRoute("Default", "{controller}/{action}/{title}", new { controller = "Home", action = "Index", title = UrlParameter.Optional });
现在,您应该从更改您的操作方法签名
public ActionResult Details(int id)
{
return View();
}
至
public ActionResult Details(string title)
{
return View();
}
顺便说一句,我没有测试它,我只是写了一些概念性的东西。你需要测试,特别是如果你的标题不是url编码的,或者包含没有破折号的空格。
编辑:
在MVC 5中,您可以使用基于属性的路由。
我已经用它来生成这样的SEO URL:
[Route("Products/{slug}-{productId}")]
public ActionResult Details(int productId, string slug)
{
return View();
}
当我需要创建url时,我使用了代码片段:
Url.Action("Details", "Products", new { productId = 201, slug = "My-Keyword-Title" })