Sitefinity继承DynamicContentController如何使用默认设计器
问题原因
你配置的DesignerUrl属性不生效,核心原因是路径配置错误:
- 配置的路径缺少必要的上下文参数占位符,系统加载设计器时无法获取当前控件的ID、类型信息,会直接拦截加载请求
- 静态路径未匹配动态内容控制器内置的设计器路由规则,会被模块权限、动态类型校验逻辑拦截
正确实现方法
不需要自行实现自定义设计器,按以下两种方式配置即可直接调用系统默认设计器:
方式1(推荐):移除手动配置的DesignerUrl特性
DynamicContentController基类已经内置了默认设计器的路由解析逻辑,你只需要给自定义控制器加上DynamicContentType特性,绑定对应动态模块的内容类型即可,完整特性配置示例:
[ControllerToolboxItem(Name = "TT_FAQ_test_MVC", Title = "TT_FAQ_test_MVC", SectionName = "TT Widgets")] [DynamicContentType(typeof(你的动态模块对应强类型))] // 替换为你FAQ动态模块生成的类型 public class TT_FAQ_test_MVCController : DynamicContentController { // 控制器内无需额外编写设计器相关逻辑 }
方式2:特殊场景下手动指定DesignerUrl
如果你需要指定设计器默认打开的视图(比如默认打开列表选择视图而非详情设置视图),可以配置带标准参数占位符的路径,示例:
// 配置为默认打开动态内容列表选择设计器 [DesignerUrl("~/Telerik.Sitefinity.Frontend/Designer/Master/DynamicContentMaster?ControlId={0}&ControlType={1}")]
注意路径末尾必须带上
ControlId={0}&ControlType={1}参数占位符,否则设计器无法获取控件上下文,依然会加载失败。
配置完成后重新编译项目,重启Sitefinity站点应用,拖入自定义组件点击编辑即可正常唤起系统默认的动态内容设计器。
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

