共享两个继承的Razor视图之间的共同点

时间:2012-07-17 17:11:20

标签: c# asp.net-mvc asp.net-mvc-3 razor

我想继承Razor WebViewPage,因为我想为每个视图执行一些常用代码,有些代码在特定的模型驱动视图中执行。

我有2个继承类

public abstract class TemplateEngine : WebViewPage  {
 ///...code
}

public abstract class TemplateEngine<TModel> : WebViewPage<TModel> {
    ///...code
}

我想使用一些代码,无论视图类型是什么 - 无论是强类型还是非强类型,还有一些特定于强类型视图的代码。我不想复制它 - 实质上我希望强类型继承视图可以访问我在通用继承视图中编写的所有代码。

我想知道我是否缺少一些基本概念......所以任何指针都会很棒。

谢谢大家

1 个答案:

答案 0 :(得分:1)

我就是这样做的。我的无类型类继承自我的类型为dynamic的类型clas。我没有在无类型类中定义任何新东西,因为它继承了我想要的一切。不确定它是最好的

abstract public class CxWebView<T> : WebViewPage<T>
{
    /* all of the methods & properties I want available in every view */
}

abstract public class CxWebView : CxWebView<dynamic>
{
}

在我的views / web.config中我将基类型设置为CxWebView

<pages pageBaseType="CxLib.Web.CxWebView">
  <namespaces>
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Routing" />
    <add namespace="System.Data" />
    <add namespace="System.Data.Entity" />
  </namespaces>
</pages>