Pretty URL ASP.NET MVC

前端 未结 3 1096
不知归路
不知归路 2020-12-29 00:45

How can I get pretty urls like localhost:8888/News/Example-post instead of localhost:8888/Home/Details/2

My HomeController has the following for the Details method

3条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2020-12-29 01:24

    As the ASP.NET routing system is somewhat complicated, there are many ways to accomplish what you describe.

    First of all, do you just want to have a pretty URL for the Details method? If so, you might consider renaming HomeController to NewsController or moving the Details method into a new NewsController class - that will automatically form the /News part of the URL. If you don't want a /Details part, you might rename your Details method Index, as that will be automatically called by /News. Finally, you need to change your int id parameter into string name.

    If you want many custom URLs, you're going to have to define your own routes. Here are two ways of doing this:

    1. The easiest way I've found is to use an ASP.NET MVC Attribute-Based Route Mapper. That way, all you have to do is add an attribute on each method you want a pretty URL for and specify what URL you want.

    First, you must follow a few steps to set up the attribute-based route mapping system, as outlined on that link. After completing those steps, you must change your method to look like this:

    [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. Alternatively, you can define your custom routes manually in Global.asax.cs. In your RegisterRoutes method, you can add the following in the middle:

    routes.MapRoute(
                    "NewsDetails",                                                   
                    "News/{name}",                                 
                    new { controller = "News", action = "Details", name = "" }
                );
    

提交回复
热议问题