看看 StackOverflow 做了什么:

http://stackoverflow.com/questions/8933768/c-sharp-boolean-outside-method-wont-read

URL 在没有最终装饰器的情况下工作,主要用于 SEO 目的。

我想在我的 ASP.Net MVC3 应用程序上有这样的东西。

假设在 Article 表上我有一个字段 Slug nvarchar(1024) not null ,我如何将它推出路由引擎,以便在有人访问链接时出现?

希望 ID 是可见的,并且即使最后没有 slug 链接也能工作。如果我更改了数据库中的 slug,任何链接仍然有效,因为 ID 将是指向文章的唯一链接。

一个清晰、简短的例子将是非凡的。

最佳答案

最好的方法是让 url 的第二部分,即 slug,就查找的方式而言是一个无关的字段。您的路线定义将是这样的:

routes.MapRoute(
    "article"
    "articles/{id}/{slug}",
    new { controller = "Article", action = "Index", slug = "" }
);

和匹配的 Action :
public ActionResult Index(int id, string slug) {
    var article = _repository.GetById<Article>(id);

    ......

    return View();
}

如果您担心人们请求带有有效 ID 的无效 slug(以及这可能对 SEO 产生的影响),那么您的 Controller 操作可能有一个额外的操作,用于根据文章验证 slug 并执行 301 重定向到所需的每当提供不正确的 slug 时的 URL。顺便说一下,这就是 StackOverflow 所做的。如果您修改问题 URL 的标题部分,您将看到该站点重定向了您。

关于c# - 如何将 'text slug' 添加到 MVC3 中的页面 url?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8933860/

10-16 22:34