我希望我的 MVC 网址是这样的:
http://www.site.com/project/id/projectname
例子:
http://www.site.com/project/5/new-website
我的控制器是:
public ActionResult Details(int id, string projectname)
我的任何操作链接是:
@Html.ActionLink("click here", "Details", "Project", new { id = project.ProjectID, projectname = project.ProjectName })
我的路线是:
routes.MapRoute(
"Project",
"project/{id}/{projectname}",
new { controller = "Project", action = "Details", id = "", projectname = "" }
);
当然,系统在那里有足够的信息,知道项目名称将是 URL 的一部分,所以它应该对链接进行 UrlEncode 并因此用连字符替换空格?但它没有,所以空格变成 %20
我不确定我在哪里定制这个?我是否覆盖 Html.ActionLink?在每次编辑时在数据库中存储一个“URL-ready”版本的名称——这似乎是一种浪费,当它应该在运行中自动完成时。而且我不想每次使用 Html.ActionLink 时都必须调用“FriendlyURL”函数——同样,它应该被自动处理。