来自Url Slug的MVC动态视图

时间:2010-06-23 05:55:54

标签: c# asp.net-mvc-2

我正在构建我的第一个.NET MVC Web应用程序,并且非常喜欢简单性和灵活性。然而,我来到了我的第一个绊脚石。

我有一个项目列表,如果您没有登录,您将看到一个预览链接,我希望链接指向以下内容:

/preview/unique-slug

然后,视图应允许我显示数据库中的内容(实际上是详细信息页面)

我不知道如何处理这个问题,也不知道我应该采用哪种方法,因为我得到的结果很差。

请指点什么?

1 个答案:

答案 0 :(得分:3)

这是我过去这样做的方式:

您需要在数据库中存储一个带有每个项目引用的slug的列。然后,创建如下路线:

routes.MapRoute("PreviewLink",
    "/preview/{slug}",
    new { controller = "Preview", action = "Details" }
);

因此,这将调用Details上的PreviewController方法,如下所示:

class PreviewController : Controller
{
    public ActionResult Details(string slug)
    {
        var model = db.GetItemBySlug(slug);
        return View("Details", model);
    }
}

基本上,你会在你的动作方法中将slug作为一个字符串,在数据库中查询带有相应slug的项目,然后显示它。基本上,我们只是用字符串id替换整数slug

希望能为你解决问题!