带动态内容的动态页面
我为我拥有的一个网站构建了一个非常简单的内容管理器。对于每个页面,用户都可以通过使用管理工具来控制显示的内容。带动态内容的动态页面
现在,我的客户希望能够添加整个页面。现在,我必须创建一个新页面,然后他们可以进入并编辑该页面的内容。但他们不想再这样做,他们想创造自己,而不必到我这里来。他们希望网页的名称也一致 - 所以如果他们创建了“关于”页面,它将是mysite.com/about而不是mysite.com/dynamicpage/8。
我需要能够做到这一点,而不使用第三方CMS,考虑到已经有一个健壮的Admin后端。有没有关于如何做到这一点的任何教程?
我正在使用ASP.NET MVC 2,.NET 4.0。
一个简单的解决方案在这里找到答案(和你应该定制有点):
只需在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
};
然后你只需要一个管理控制台,以更新内容数据库条目和客户端可以添加/删除,只是在数据库中存在/编辑条目。
虽然我还没有尝试过,你可以在这里看看http://haacked.com/archive/2009/04/22/scripted-db-views.aspx
而且它已经被问和SO Create Dynamic pages in asp.net mvc
如果您可以转移到MVC3,您可以使用Razor从字符串中执行脚本(页面)的功能。
I'm using this open-source project to do something very similar。
然后,您需要添加的是管理区域中的一个页面,用于编辑虚拟页面,并将结果填入数据库。
您的控制器将检查请求的路由并从您的数据库中检索正确的页面记录,使用Razor执行页面(并以字符串形式获取结果)并将结果发送回客户端。
这将让您轻松地在页面中包含动态内容(脚本可以说引用部分视图返回动态项目)。如果他们所需要做的只是编辑HTML,那可能是矫枉过正。
我可能在这里误解了一些东西。难道你不能通过自定义路由处理程序来实现吗? – 2011-05-03 15:43:55