具有动态内容的动态页面

时间:2011-05-03 15:29:28

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

我为一个网站构建了一个非常简单的内容管理器。对于每个页面,用户都可以使用管理工具控制显示的内容。

现在,我的客户希望能够添加整个页面。现在,我必须创建一个新页面,然后他们可以进入并编辑该页面的内容。但他们不想再那样做了,他们想要创造属于自己的东西而不必来找我。他们希望页面的名称也一致 - 所以如果他们创建一个“关于”页面,那么它将是 mysite.com/about 而不是 mysite.com/dynamicpage / 8

我需要能够在不使用第三方CMS的情况下执行此操作,因为已经有一个强大的管理员后端。有没有关于如何做到这一点的教程?

我正在使用ASP.NET MVC 2,.NET 4.0。

3 个答案:

答案 0 :(得分:2)

这里有一个简单的解决方案(你应该稍微调整一下):

只需在ContentController上创建一个包含变量(比如pageName或其他东西)的路径。 AKA(mysite.com/content/{pageName})。您的操作方法采用页面名称,然后通过数据库加载HTML。然后它只是将HTML作为内容响应返回

return new ContentResult
{
    Content = htmlFromDatabase,
    ContentType = "text/html" // Change if you want depending on DB values
};

然后,您只需要一个管理面板来更新包含内容的数据库条目,客户端可以添加/删除/编辑数据库中存在的条目。

答案 1 :(得分:1)

虽然我没有尝试过,但你可以看看http://haacked.com/archive/2009/04/22/scripted-db-views.aspx

已经在SO Create Dynamic pages in asp.net mvc

中提出并回答了问题

答案 2 :(得分:1)

如果你可以转移到MVC3,你可以使用Razor从字符串中执行脚本(页面)的能力。

I'm using this open-source project to do something very similar

然后,您需要添加的是管理区域中的一个页面,用于编辑虚拟页面,并将结果填充到数据库中。

您的控制器将检查请求的路由并从您的数据库中检索正确的页面记录,使用Razor执行页面(并将结果作为字符串),并将结果发送回客户端。

这将让您轻松地在页面中包含动态内容(脚本可以,例如引用返回动态项目的部分视图)。如果他们需要做的就是编辑HTML,那可能就有点过头了。