由于 ASP.NET 路由系统有些复杂,因此有很多方法可以完成您所描述的任务。
首先,您只想为 Details 方法提供一个漂亮的 URL 吗?如果是这样,您可能会考虑将 HomeController 重命名为 NewsController 或将 Details 方法移动到新的 NewsController 类中 - 这将自动形成/News
网址的一部分。如果你不想要一个/Details
部分,您可以重命名您的 Details 方法Index
,因为它将被自动调用/News
。最后,你需要改变你的int id
参数传入string name
.
如果您想要许多自定义 URL,则必须定义自己的路由。以下是执行此操作的两种方法:
1.
我发现的最简单的方法是use an ASP.NET MVC 基于属性的路由映射器。这样,您所要做的就是为每个需要漂亮 URL 的方法添加一个属性,并指定您想要的 URL。
首先,您必须按照该链接中所述的几个步骤来设置基于属性的路由映射系统。
完成这些步骤后,您必须将方法更改为如下所示:
[Url("News/{name}")]
public ActionResult Details(string name)
{
var ArticleToView = (from m in _db.ArticleSet where m.storyName == name select m).First();
return View(ArticleToView);
}
2.
或者,您可以手动定义您的自定义路由Global.asax.cs
。在你的RegisterRoutes
方法中,可以在中间添加以下内容:
routes.MapRoute(
"NewsDetails",
"News/{name}",
new { controller = "News", action = "Details", name = "" }
);