Wordpress 类似于 ASP.NET MVC2/3 或 ASP.NET 4.0 中的动态永久链接
Posted
技术标签:
【中文标题】Wordpress 类似于 ASP.NET MVC2/3 或 ASP.NET 4.0 中的动态永久链接【英文标题】:Wordpress like dynamic permalinks in ASP.NET MVC2/3 or ASP.NET 4.0 【发布时间】:2011-06-02 06:09:25 【问题描述】:场景:
有两个实体,分别是“图书”和“书评”。可以有多本书,每本书可以有多个评论。
每篇评论和每本书都应该有一个单独的固定链接。用户可以使用单独的输入表单添加书籍和评论。一旦添加任何书籍/评论,就应该可以通过其永久链接访问它。
任何人都可以指出我应该如何实施的正确方向?
【问题讨论】:
【参考方案1】:网址路由将立即处理此问题,无需额外的实际工作。
只需创建一个 Books 或 BookReviews 控制器。 创建一个采用 Id 的操作方法
您将拥有基本的永久链接,例如 /书籍/详情/1 和 /BookReviews/Details/4
如果您对这样的固定链接感到满意,那么您就可以开始了。 :)
然而,如果你想更进一步,通过更多的工作让它对搜索引擎更加友好......
首先,您应该创建或找到一个简单的“slug”编码器,它将接受一个字符串(可能是书名或评论者的标题)并将任何非字母数字字符编码为 - 或类似字符。 URL Slugify algorithm in C#?
现在我们可以创建一个类似的路由
书籍/title-id
routes.MapRoute(
"BooksSeoRoute",
"Books/slug-id",
new controller = "Books", action = "Details" // Parameter defaults
);
所以我们最终得到如下所示的永久链接: 书籍/The-Title-Of-The-Book-38
对于书评,您可能希望采用“嵌套”方法,以便您可以使用
routes.MapRoute(
"BookReviewsSeoRoute",
"Books/book-slug/slug-id",
new controller = "BookReviews", action = "Details" // Parameter defaults
);
书籍/The-The-Of-The-Book-38/Review-by-John-Smith-24
您可以在模型/实体/数据库中添加一个 slug 字段,也可以添加一个 getter,从您的标题/作者动态生成它
即
public class Book
public string Id get;set;
public string Title get;set;
public string Slug
get
return SlugEncoder.EncodeString(this.Title);
在你看来
=html.ActionLink("Permalink","Details","Book",new@Id=Model.Id, @Slug=Model.Slug)
【讨论】:
你好。我当前在路由配置中的设置如您在代码中所述,但我需要在根级别更改它的 slug 参数。因此,我需要的是:example.com/ slug,而不是:“Books/book-slug/slug-id”。你能帮我解决这个问题吗?以上是关于Wordpress 类似于 ASP.NET MVC2/3 或 ASP.NET 4.0 中的动态永久链接的主要内容,如果未能解决你的问题,请参考以下文章