gpt4 book ai didi

asp.net - 如何将动态加载的 webforms 用户控件转换为 mvc razor

转载 作者:行者123 更新时间:2023-12-02 10:24:55 24 4
gpt4 key购买 nike

我正在将以 Webforms 编写的现有自定义 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);

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

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

1) 加载基于动态内容的部分 View 并将 CMS 内容作为模型传递给 View 的最佳 MVC 方式是什么?它是单个 CMSpage Controller ,每个模板都有部分内容吗?或者每个模板都有一个 Controller ?

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

3)欢迎使用伪代码!

提前致谢

最佳答案

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

对此没有一刀切的解决方案;仅了解产品的一小部分很难提供建议。

关于asp.net - 如何将动态加载的 webforms 用户控件转换为 mvc razor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15097377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com