3

我将以 Web 表单编写的现有自定义 CMS 移植到 MVC4,理想情况下保持 CMS 数据库架构和数据完好无损。我正在使用 url 来确定请求哪个页面,以及使用哪个模板。模板主要用于不同的布局和内容“字段”。

在我的网络表单应用程序中,我有一个基类PageTemplate : UserControl

我有一个 default.aspx,它查看请求的路径,从数据库中提取它,然后使用 TemplateId 属性动态加载用户控件,将数据库内容添加到属性,然后添加到页面上的占位符

p = CMSPage.Select(fullPath);
myTemplate = LoadControl("~/templates/template_" + p.TemplateId.ToString + ".ascx");
myTemplate.Content = p;
phTemplate.Controls.Add(myTemplate);

在 usercontrolsInit事件中,我使用来自 CMS 的内容填充 Literal 标签——这意味着我可以拥有服务器控制按钮和交互并且仍然处理回发——所有这些都封装在 usercontrol 中

我有大约 20 个模板,大多数只是渲染,有些是交互式的。我想迁移到 Razor 作为视图引擎。

1)基于动态内容加载部分视图并将CMS内容作为模型传递给视图的最佳MVC方式是什么?它是单个 CMSpage 控制器,每个模板都有部分吗?还是每个模板的控制器?

2)从模板部分中处理帖子的最结构化的MVC方法是什么:单个CMS控制器上的方法?每个模板的控制器?

3)欢迎使用伪代码!

提前致谢

4

1 回答 1

0
  1. 您可以遵循与用户控制方法类似的方法。重定向到一个操作方法,该方法根据模板 ID 选择要返回的部分视图。action 方法可以取部分 ID 并执行return PartialView("View" + templateID.ToString());。也可以从使用的视图中动态加载部分视图Html.Action。如果您需要动态内容加载,也可以使用 $.ajax 使用 JQuery 加载部分视图并将其流式传输到客户端。
  2. 要么在局部视图中定义表单,要么拥有一个接受 FormCollection 的全局局部视图(一种引用回发表单的通用方式)。您可以使用一些回传的 ID 来确定模板响应。如果可以,在模板中包含表单可能会更好且更易于配置。但是,后者会更复杂,但如果您想要一个通用的 CMS 解决方案,后者是一种实现方式。

对此没有一刀切的解决方案。仅对产品一瞥就很难提供建议。

于 2013-02-26T20:36:24.703 回答