我可以像在MVC中一样覆盖Web窗体中的视图吗?

时间:2014-08-07 11:08:27

标签: c# asp.net webforms episerver

在ASP.NET MVC中我通常可以覆盖视图,例如通过在DisplayTemplates文件夹中放置一个具有相同名称的视图。如果我想覆盖图像的渲染方式,我可以将Images.cshtml之类的东西放在文件夹中。

现在,我想覆盖在EPiServer中呈现xforms的方式。我知道如何在ASP.NET MVC中执行此操作,但此项目使用Webforms。

我试过搜索,但文档似乎很少涉及这个问题。在ASP.NET MVC中,我可以例如扩展搜索引擎以搜索特定位置以查找我的视图,或者将它们放在ASP.NET默认查找的位置。

这似乎不适用于Web窗体。有谁知道怎么做?

编辑:EPiServer有一个.ascx文件,用于渲染XForm。我想告诉ASP.NET使用我的.ascx文件。为此,我需要告诉ASP.NET查找我的.ascx文件,例如通过告诉ASP.NET视图引擎在特定文件夹中查找我的.ascx,或者将其放置在视图引擎默认情况下的某个位置。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

如果要在任何地方更换它,只需更换ascx文件即可。否则我恐怕答案是否定的。默认情况下,Web窗体不会查找文件的备用位置,因为通常使用完整路径或类名指定控件。当你找不到类名时,你想要做的就是等待C#寻找替代命名空间。有很多方法可以在Web窗体中实现此行为,例如动态数据,但ascx控件不是这样。

答案 1 :(得分:0)

如果您使用Property Web控件来显示值,您可以创建自己的自定义PropertyControl并在PropertyControlFactory中为您的类型注册它。这样您就可以控制财产的呈现方式。

虽然这不允许您直接指出.ascx,但如果您愿意,可以将其加载到服务器控件中。

有关代码示例以及在EPiServer中自定义属性呈现的此(以及其他一些)方法的精彩摘要,请参阅Mathias Kunto在http://blog.mathiaskunto.com/2012/03/05/being-friends-with-the-propertycontrolclassfactory-or-101-ways-to-change-episerver-built-in-property-appearances/的博客文章。