如何让MVC路由到更友好的用户界面?

时间:2017-03-27 18:17:05

标签: c# asp.net-mvc asp.net-mvc-5

修改

即使纠正了路线以匹配下面的操作,404错误仍然存​​在。

编辑2

我想要覆盖的网址中有.,我认为这会导致问题,因为其他文章网址没有,并且工作正常。我该如何将其编码?

我通常使用/site/contoller/action/param类型网址完全没问题

对于我的博客网站,我想要一些不同的东西。

以下是我的一篇博客文章的现有链接示例:

  

/Article/tweaking-asp.net-identity-to-add-first-and-last-name-as-username

我在文章控制器上有一个索引视图,接受一个名为slug的参数:

public ActionResult Index(string slug)
{
    ApplicationDbContext Context = new ApplicationDbContext();

    var Article = Context.Articles.FirstOrDefault(x => x.Slug == slug);

    // get and list articles and build the ViewModel

    return View(Model);
}

我更新了我的RouteConfig.cs来处理这个问题,但是当我尝试导航到使用此配置的文章时,我似乎弄错了,因为我收到了 HTTP404 错误。

routes.MapRoute(
    name: "Articles",
    url: "Article/{slug}",
    defaults: new { controller = "Article", action = "Index", slug = UrlParameter.Optional }
);

如何正确路由到此类网址?

1 个答案:

答案 0 :(得分:1)

基于提供的slug(tweaking-asp.net-identity-to-add-first-and-last-name-as-username),我相信你的问题是由“asp.net”中的句号引起的。基于其他答案,似乎IIS认为您正在请求文件并且它会查找它,因为它找不到它,它返回404.

请尝试使用没有点的slug,如果确实有效,那么可能就是这种情况,这是一个可能的解决方案:Dots in URL causes 404 with ASP.NET mvc and IIS