加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 按名称查找MVC模板视图

发布时间:2020-12-16 03:28:40 所属栏目:asp.Net 来源:网络整理
导读:我正在写一个 HtmlHelper扩展,我需要按名称搜索模板的存在.所讨论的模板可以是显示器或编辑器模板,具体取决于上下文.我最初的想法是使用ViewEngines.Engines.FindPartialView方法.但是,看起来这个方法没有搜索?/ Views / Shared / DisplayTemplates和?/ View
我正在写一个 HtmlHelper扩展,我需要按名称搜索模板的存在.所讨论的模板可以是显示器或编辑器模板,具体取决于上下文.我最初的想法是使用ViewEngines.Engines.FindPartialView方法.但是,看起来这个方法没有搜索?/ Views / Shared / DisplayTemplates和?/ Views / Shared / EditorTemplates目录.
我想这是有充分理由的.毕竟,如果没有上下文的其他信息,ViewEngine将如何知道是否返回显示或编辑器模板?

因此,这导致了一个问题:如何搜索特定的EditorTemplate / DisplayTemplate我考虑将自定义视图引擎添加到ViewEngines集合以包含这些位置.但是,我担心这可能会有问题.

我主要担心的是DisplayTemplate / EditorTemplate视图可能会出于意外情况而提供.有没有其他人认为这是一个问题?
仅在必要时新建特定的DisplayTemplateViewEngine / EditorTemplateViewEngine实例并保持ViewEngines集合清除此特定功能是否更好?
还有什么我想念的吗?

解决方法

我非常喜欢MVC框架是开源的!我能够从TemplateHelpers类(MVC运行时内部)确定在渲染模板时考虑DataBoundControlMode.答案很简单!我所要做的就是在模板名称前加上相应的模板导向器.所以,要找到一个显示模板:

var metadata = ModelMetadata.FromLambdaExpression(expression,HtmlHelper.ViewData);
ViewEngines.Engines.FindPartialView(
    _controllerContext,string.Format("DisplayTemplates/{0}",metadata.TemplateHint))

无需额外的视图引擎或路由!如果您对该应用程序感兴趣,我的帮助程序是为给定模型自动生成UI组件.我想启用自定义模板的存在以绕过自动渲染.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读