漂亮的 URL ASP.NET MVC

2023-11-30

如何获得漂亮的网址,如 localhost:8888/News/Example-post 而不是 localhost:8888/Home/Details/2

我的 HomeController 有以下详细信息方法

public ActionResult Details(int id)
{
    var ArticleToView = (from m in _db.ArticleSet where m.storyId == id select m).First();

    return View(ArticleToView);

由于 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 = "" }
            );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

漂亮的 URL ASP.NET MVC 的相关文章

随机推荐