更改 MVC4 上的基本视图类型

2023-12-25

我从下面的链接读到了一篇关于更改 MVC 上的基本视图类型的文章:

http://haacked.com/archive/2011/02/21/changing-base-type-of-a-razor-view.aspx http://haacked.com/archive/2011/02/21/changing-base-type-of-a-razor-view.aspx

我按照说明进行操作,但我的页面仍然继承自System.Web.Mvc.WebViewPage。我无法访问自定义视图库中定义的任何属性,并且在运行时收到错误。当我使用@inherits关键字,它修复了。

网页配置

<pages pageBaseType="[MyNamespace].WebViewPageBase">
  <namespaces>
    <add namespace="System.Web.Helpers" />
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Optimization" />
    <add namespace="System.Web.Routing" />
    <add namespace="System.Web.WebPages" />
  </namespaces>
</pages>

Web视图页面库

public class WebViewPageBase : WebViewPage
{
    public SomeType MyProperty { get; set; }

    public override void InitHelpers()
    {
        base.InitHelpers();
        MyProperty = { foo };
    }

    public override void Execute()
    {

    }
}


public class WebViewPageBase<T> : WebViewPage<T>
{
    public SomeType MyProperty { get; set; }

    public override void InitHelpers()
    {
        base.InitHelpers();
        MyProperty = { foo };
    }

    public override void Execute()
    {

    }
}

局部视图

@model TopMenuModel

<div class="topMenu">
@MyProperty
</div>

但在我读过的帖子中没有关于@inherits关键词。有什么我想念的东西或者有什么方法可以让这个工作没有@inherits所有页面中的关键字?

SOLVED:

web.config文件输入root目录不正确。我改变了基本类型web.config文件下View目录并修复。


为什么你展示了两个版本WebViewPageBase: 通用和非通用?

您只需要通用版本:

public class MyWebView<T> : WebViewPage<T>
{
    public SomeType MyProperty { get; set; }

    public override void InitHelpers()
    {
        base.InitHelpers();
        MyProperty = new SomeType();
    }

    public override void Execute()
    {
    }
}

进而:

<pages pageBaseType="MvcApplication1.WebViews.MyWebView">
  <namespaces>
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Routing" />
  </namespaces>
</pages>

现在在您的视图中您将能够使用该属性:

@model TopMenuModel

<div class="topMenu">
    @MyProperty
</div>

UPDATE:

逐步设置:

  1. 使用 Internet 模板创建新的 ASP.NET MVC 3 应用程序
  2. 添加自定义基础视图:

    namespace MvcApplication1
    {
        public class MyWebView<T> : WebViewPage<T>
        {
            public string MyProperty { get; set; }
    
            public override void InitHelpers()
            {
                base.InitHelpers();
                MyProperty = "Hello World";
            }
    
            public override void Execute()
            {
            }
        }
    }
    
  3. Set the pageBaseType属性在~/Views/web.config(不要与~/web.config):

    <pages pageBaseType="MvcApplication1.MyWebView">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
    
  4. Inside ~/Views/Home/Index.cshtml使用该属性:

    <div>
        @MyProperty
    </div>
    
  5. Hit Ctrl+F5 to run the application and if everything goes well you will be greeted with a Hello World.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改 MVC4 上的基本视图类型 的相关文章

随机推荐

  • 将对话框保持在窗口顶部,但不是在所有内容之上

    在我的 WPF 应用程序中 我有很多弹出的自定义对话框 以便用户可以使用以下命令执行各种操作someDialogClass ShowDialog 为了确保对话框位于调用它的窗口顶部 我添加Topmost True to the Window
  • 实体框架中使用 OR 条件的动态查询

    我正在创建一个应用程序来搜索数据库并允许用户动态添加任何条件 大约 50 个可能的条件 就像下面的问题一样 使用实体框架创建动态查询 https stackoverflow com q 5541234 810850 我目前正在进行一项检查每
  • 焦点事件发生变化?

    我正在将 Visual Basic 6 程序移植到 PyQt 我需要调用一个函数来设置某些小部件始终启用 禁用 我不想调用一个函数太多次 所以我发现了一个事件 当焦点从一个小部件更改为另一个小部件时 我可以调用我的小部件管理器功能 我正在
  • 在Python中的一个图中叠加热图

    我有两个 100x100 矩阵 u 0 and u 1 我已将两个数组的值设置在 0 和 1 之间 以使用 matplotlib 函数制作热图pcolormesh 我可以使用以下方法获得一张热图 fig1 plt pcolormesh u
  • 使用 loc 时的 Pandas SettingWithCopyWarning [重复]

    这个问题在这里已经有答案了 关于使用 loc 进行索引 切片分配的一般问题 假设以下数据帧 df df A B C 0 a b 1 a b 2 b a 3 c c 4 c a 重现代码 df pd DataFrame A list aabc
  • 如何在 SQL Server 中转置查询结果(行到列)

    我的查询给出的结果如下 所以 我想将结果转换成这样 请注意带有 NULL 值的交叉字段 PIVOT 是实现这一目标的方法 一开始它可能会令人困惑 至少对我来说是这样 https www codeproject com Tips 500811
  • 使用 PHP cURL 进行缓存

    我正在使用 PHP cURL 从另一个网站获取信息并将其插入到我的页面中 我想知道是否可以将获取的信息缓存在我的服务器上 例如 当访问者请求某个页面时 系统会获取该信息并在我的服务器上缓存 24 小时 然后 该页面将完全在本地提供 24 小
  • 在虚拟环境中将包安装到全局站点包中

    让我先声明我已阅读过pip 安装在全局站点包中而不是 virtualenv https stackoverflow com questions 20952797 pip installing in global site packages
  • PySpark - 按列的值拆分/过滤 DataFrame

    我有一个与此示例类似的 DataFrame Timestamp Word Count 30 12 2015 example 1 3 29 12 2015 example 2 1 28 12 2015 example 2 9 27 12 20
  • 跨 docker 容器共享内存

    如果使用 Java MQ 类 而不是 JTA 将 Websphere MQ 用作 XA 分布式事务 事务管理器 则 Java 应用程序和 WMQ 都需要驻留在同一主机上 有人告诉我这是因为共享内存被用作进程间通信机制 Java 应用程序和
  • 将 Iterator<(A,B)> 拆分为 Iterator 和 Iterator

    我想分割实现的对象的输出Iterator lt A B gt 分成两个实现的对象Iterator a and Iterator b 由于其中一个输出的迭代次数可能多于另一个 因此我需要缓冲Iterator lt A B gt 因为我不能依赖
  • 将 Patreon API 与 Flutter 应用程序链接

    我对使用 Flutter 很陌生 在没有帮助的情况下从未正确使用过 API 我想让我的应用程序免费 没有大量广告 所以我希望创建一个 Patreon 来支持它的维护 当在线寻找教程视频或任何可用于 Flutter 或我知道如何使用的其他语言
  • 解释错误:“构造函数……无法应用:实际长度和形式长度不同”

    请帮我修复这个错误 类 C10h1 CollegeMember 中的构造函数 CollegeMember 不能 适用于给定类型 必需 java lang String java lang String 发现 没有参数 原因 实际论证和形式论
  • 在 Javascript 中增加 CSS padding-top 属性

    我有一个 CSS 定义为div myDiv padding top 20px padding bottom 30px 在 JS 函数中 我想增加padding top by 10px function DoStuff var myDiv d
  • Pandas 中的固定宽度文件操作

    我有一个具有以下格式的固定宽度文件 5678223313570888271712000000024XAXX0101010006461801325345088800 0784001501 25abc yahoo com 56782233246
  • Spring Mongodb使用DBRef关联获取数据

    我有一个带有嵌套 dbref 地址的零售商类 我想根据属于地址类一部分的城市获取零售商 但我遇到了以下错误 org springframework data mapping model MappingException 路径无效 参考地址
  • 在 Doctrine 中向当前表添加虚拟列?

    我正在使用 Doctrine 1 2 和 Symfony 1 4 假设我有一个用户模型 其中有一个配置文件 这些定义为 User id username password 创建时间 更新时间 Profile id user id 名 姓 a
  • 网络基础设施发现

    我想执行彻底的 LAN 设备发现 以便我可以创建一个与所附图表类似的图表 但包含 IP 和 MAC 地址等附加信息 我尝试过 Torry 的代码 type PNetResourceArray TNetResourceArray TNetRe
  • java.time.format.DateTimeParseException:无法在索引 21 处解析文本

    我得到的日期时间值为 created at 2012 02 22T02 06 58 147Z Read only The time at which this task was created 这是由 Asana 给出的API https
  • 更改 MVC4 上的基本视图类型

    我从下面的链接读到了一篇关于更改 MVC 上的基本视图类型的文章 http haacked com archive 2011 02 21 changing base type of a razor view aspx http haacke