【问题标题】:Can I override views in Web Forms like I can in MVC?我可以像在 MVC 中那样覆盖 Web 窗体中的视图吗?
【发布时间】:2014-08-07 11:08:27
【问题描述】:

在 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,或者将其放置在视图引擎默认显示的某个位置。

我该怎么做?

【问题讨论】:

  • 更具体。你有什么输出,你想要达到什么输出?
  • 我添加了一些信息。

标签: c# asp.net webforms episerver


【解决方案1】:

如果你想在任何地方替换它,只需替换 ascx 文件。否则恐怕答案是否定的。默认情况下,Web 窗体不会寻找文件的替代位置,因为控件通常使用完整路径或类名指定。您想要做的相当于 C# 在找不到类名时寻找替代名称空间。有一些方法可以在 Web 表单中实现这种行为,例如动态数据,但 ascx 控件不是这样。

【讨论】:

    【解决方案2】:

    如果您使用 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/。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多