如何添加';文本段塞';到MVC3中的页面url

本文关键字:MVC3 url 段塞 添加 何添加 文本 | 更新日期: 2023-09-27 18:21:04

查看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,任何链接都将仍然有效,因为ID将是指向文章的唯一链接。

一个清晰、简短的例子将是惊人的。

如何添加';文本段塞';到MVC3中的页面url

实现这一点的最佳方法是将url的第二部分slug作为一个与查找方式无关的字段。你的路线定义是这样的:

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

以及匹配动作:

public ActionResult Index(int id, string slug) {
    var article = _repository.GetById<Article>(id);
    ......
    return View();
}

如果你担心有人用有效的ID请求无效的slug(以及这可能对SEO产生的影响),那么你的控制器操作可能会有一个额外的操作,根据文章验证slug,并在提供不正确的slug时执行301重定向到所需的URL。顺便说一句,StackOverflow就是这么做的。如果你修改问题URL的标题部分,你会看到网站会重定向你。

routes.MapRoute("Slugged", "{controller}/{action}/{id}/{slug}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });'

然后,对于处理调用的操作,接受id和slug参数。

然后,我会验证提供的slug是否与databsae中实际记录中的slug匹配,如果不匹配,301重定向到正确的id和slug(我这么说的原因是,如果人们发现你的slug可以更改并以多种不同的方式链接到你,你就不会在SEO中被标记)

首先声明一个路由"slug"参数,然后在定义动作链接或动作url时通过路由值传递它。