C# 具有动态内容的动态页面

C# 具有动态内容的动态页面,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我已经为我拥有的网站建立了一个非常简单的内容管理器。对于每个页面,用户都可以使用管理工具控制显示的内容 现在,我的客户希望能够添加整个页面。现在,我必须创建一个新页面,然后他们可以进入并编辑该页面的内容。但他们不想再这样做了,他们想创造自己的,而不必来找我。他们希望页面名称也保持一致——因此,如果他们创建一个“关于”页面,它将是mysite.com/About而不是mysite.com/dynamicpage/8 我需要能够做到这一点,而不使用第三方CMS,考虑到已经有一个强大的管理后端。有关于

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

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

我需要能够做到这一点,而不使用第三方CMS,考虑到已经有一个强大的管理后端。有关于如何做到这一点的教程吗


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

虽然我还没有尝试过,但您可以在这里查看


虽然我还没有试过,但它已经在SO中被询问和回答了,你可以在这里看看

这里已经有了一个简单的解决方案(您可能需要对其进行一些定制):

只需在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
};
然后,您只需要一个管理面板就可以用内容更新数据库条目,客户端可以添加/删除/编辑数据库中刚刚存在的条目

这里有一个简单的解决方案(您可能需要对其进行一些定制):

只需在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
};

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

如果您可以移动到MVC3,则可以使用Razor的功能从字符串执行脚本(页面)

然后,您只需要在管理区域中添加一个页面来编辑虚拟页面,并将结果填充到数据库中

控制器将检查请求的路由并从数据库中检索正确的页面记录,使用Razor执行页面(并以字符串形式获取结果),然后将结果发送回客户端


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

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

然后,您只需要在管理区域中添加一个页面来编辑虚拟页面,并将结果填充到数据库中

控制器将检查请求的路由并从数据库中检索正确的页面记录,使用Razor执行页面(并以字符串形式获取结果),然后将结果发送回客户端


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

我可能误解了这里的某些内容。你不能用一个定制的路径处理程序来实现这一点吗?我可能有点误解。您不能用自定义路由处理程序来实现这一点吗?