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 中的动态永久链接的主要内容,如果未能解决你的问题,请参考以下文章

从 ASP.NET MVC Lambda 表达式中获取价值

asp.net mvc项目搭建

通过 asp.net mvc 上传时以编程方式扫描文件

ASP.NET MVC 4 (一)路径映射

ASP.NET MVC 错误处理 - 删除 aspxerrorpath

ASP.NET MVC 4 (一)路径映射