Asp.net core mvc 是有可能使搜索引擎优化友好的网址';在ASP.NET核心中,有一个类似的

Asp.net core mvc 是有可能使搜索引擎优化友好的网址';在ASP.NET核心中,有一个类似的,asp.net-core-mvc,asp.net-mvc-routing,asp.net-core-2.0,asp.net-routing,Asp.net Core Mvc,Asp.net Mvc Routing,Asp.net Core 2.0,Asp.net Routing,我想问你们,是否有可能为我的项目/{action}/{title}制作这样的路由 我想知道这是否可能,这个url也必须是主键吗?因为没有传递ID来知道这是哪篇博客文章 谢谢。使用属性路由,您可以非常轻松地做到这一点: [Route("blogs")] public class BlogController { [AcceptVerbs("GET", "HEAD", Route = "{slug}")] public IActionResult View(string slug)

我想问你们,是否有可能为我的项目
/{action}/{title}
制作这样的路由

我想知道这是否可能,这个url也必须是主键吗?因为没有传递ID来知道这是哪篇博客文章


谢谢。

使用属性路由,您可以非常轻松地做到这一点:

[Route("blogs")]
public class BlogController
{
    [AcceptVerbs("GET", "HEAD", Route = "{slug}")]
    public IActionResult View(string slug)
    {
    }
}

这将所有对
/blogs/whatever
的请求映射到该操作,并将
slug
设置为“/blogs/”

之后的值,这意味着每个blogpost都应该在DB上有一个slug列,以确定哪一个是正确的?这就是我在我的博客上实际拥有的。slug每篇文章都是独一无二的。太好了,谢谢。还有,如果有两篇文章标题相同,我该如何处理?每篇文章的slug应该是唯一的。因此,如何生成它取决于您。您可以自动生成它,但如果需要,允许用户修改它。然后,如果数据库中的唯一性约束失败,则在编辑器中返回一个错误,指出它不是唯一的。顺便说一句,我也更新了我的答案,因为你可能想要接受HEAD和GET请求。好吧。非常感谢:)