【问题标题】:sharing common between two inherited Razor views在两个继承的 Razor 视图之间共享共同点
【发布时间】:2012-07-17 17:11:19
【问题描述】:

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

我有 2 个继承类

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

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

无论视图的类型如何,我都想使用一些代码——无论是否是强类型,还有一些特定于强类型视图。我不想复制它——本质上我希望强类型继承视图能够访问我在通用继承视图中编写的所有代码。

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

谢谢大家

【问题讨论】:

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


    【解决方案1】:

    这就是我的做法。我的无类型类继承自我的类型为动态的类。我没有在无类型类中定义任何新内容,因为它继承了我想要的一切。不知道是不是最好的

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

    在我的视图/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>
    

    【讨论】:

    • 这与我理想中想要的有点相反……我的类型化类继承自非类型化类。问题是我的类型化类有很多特殊的视图特定代码,只有某些页面使用。
    猜你喜欢
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    相关资源
    最近更新 更多