实现自定义 MVC 基本视图页面

2023-11-22

我正在尝试实现 MVC 自定义基本视图页面以“覆盖”User财产种类。这将使我的CustomPrincipal在任何视图中均可访问的类型。

在网上搜索后,我发现Phil Haack 关于实现自定义基本视图页面的说明。我完全按照说明进行操作,但在访问视图中的属性时遇到了问题。

当我打开视图时,任何先前的 Html 帮助器操作都会用蓝色波浪线加下划线。当我将光标放在@Html部分,它揭示了错误:

“Html 不明确,是从命名空间或类型“System.Web.WebPages、System.Web.Mvc”导入的。”

现在,我明白为什么会收到该消息,但我不知道如何解决它。我不知道为什么这很重要,但当前应用程序是在 Visual Basic 中创建的。作为辅助测试,我用 C# 创建了另一个 MVC 应用程序,并尝试实现自定义基本视图页面。在 C# 应用程序中它运行得很好。我可以从视图中访问我的自定义属性。

我已经在网上搜索这个问题的答案,但到目前为止还没有找到任何东西。还有其他人遇到过类似的问题吗?

作为参考,我包括了我的自定义基本视图页面和~/Views/web.config below:

基本视图页面

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;
using CCInfoController;

namespace CCInfo.Web.Mvc
{
    public class BaseViewPage<TModel> : WebViewPage<TModel>
    {
        public new CustomPrincipal User
        {
            get
            {
                return base.User as CustomPrincipal;
            }
        }

        public override void Execute()
        {
        }
    }
}

〜/视图/web.config

<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor"
      type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup,
      System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral,
      PublicKeyToken=31BF3856AD364E35">
    <section name="host" 
       type="System.Web.WebPages.Razor.Configuration.HostSection,
       System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral,
       PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    <section name="pages"
       type="System.Web.WebPages.Razor.Configuration.RazorPagesSection,
       System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral,
       PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory,
       System.Web.Mvc, Version=3.0.0.0, Culture=neutral,
       PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="CCInfo.Web.Mvc.BaseViewPage">
      <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.Web.WebPages"/>
        <add namespace="CCInfoController" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>
  ...
</configuration>

您需要提供 2 个版本的 WebViewPage,通用的和非通用的。

public class BaseViewPage<TModel> : WebViewPage<TModel>
{
}


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

实现自定义 MVC 基本视图页面 的相关文章

随机推荐

  • Google App Engine 应用程序实例回收和响应时间

    我在 GAE for Java 小组上发布了这篇文章 但我希望在这里更快地得到一些答案 我决定对我的应用程序进行一些长期运行的性能测试 我 每 5 30 分钟创建一些小型客户端点击应用程序 我运行 3 5 与此类客户端的线程数 我注意到响应
  • NodeJS - 设置mean.io找不到模块错误

    我对整个 node js 事物有点陌生 当尝试安装 MEAN 包时http mean io 我忠实地遵循了以下步骤 我 cd 到我的目录 运行 npm install 然后运行 grunt 命令 并收到此错误 Error Cannot fi
  • 如何解码 HTML 实体

    我有带有 HTML 实体的字符串变量 var str Some text x26 text 我想将其转换 解码 为原始字符 Some text text JavaScript 没有内置函数来实现想要的结果 我无法使用 jQuery 或 DO
  • 简单的浮点数会失去精度

    我正在使用 Delphi XE2 Update 3 即使是最简单的浮点数也存在精度问题 例如3 7 给定以下代码 32 位控制台应用程序 program Project1 APPTYPE CONSOLE R res uses System
  • Angular2 - 在 Azure 中托管时页面刷新 404ing

    我正在开发 Angular2 应用程序 它使用 Angular common 2 0 0 rc 4 和 Angular router 3 0 0 beta 2 我的问题是 当我在某些页面上使用浏览器刷新时 我看到一条错误消息 您正在查找的资
  • 使用 -MM 在 Makefile 中生成依赖项时出现问题

    我是 Makefiles 和 g 的新手 在使用 MM 标志生成项目文件的依赖项时遇到了问题 我发布了我正在使用的 Makefile 供您考虑 请看一下 OUTPUT ROOT output SOURCE ROOT source TITLE
  • SQL:为什么在此 where 子句中过滤掉 NULL 值?

    在我的表中 我有一个可为空的位列 旧系统 另一位开发人员最近对存储过程进行了更改 以仅显示位列不为 true 的值 1 因为这是一个可为空的列 我们注意到如果该列为 NULL 则不会选取记录 为什么是这样 其他开发人员和我都同意 NULL
  • 如何在 PHP 中将变量作为 $_POST 键传递?

    在 PHP 中如何将变量作为 POST 数组键值传递 还是不可能 test test echo POST test Thanks 如果我没理解错的话 你想通过 post 将一个变量从一个 php 文件传递 到另一个 php 文件 这肯定可以
  • 如何在 mat-list-option (mat-selection-list) 项中添加辅助操作

    如何在 mat list option 元素内的 mat selection list 中添加辅助操作 mat icon button 目前 所有项目都添加到 mat list text div 内 例子 https stackblitz
  • 使用 MSI 从本地 Service Fabric 群集访问 Key Vault

    我想通过托管服务身份 MSI 从 Service Fabric 应用程序访问 Key Vault 我已在 Azure 门户中的虚拟机规模集上启用 MSI 并授予其对我的 Key Vault 资源的访问权限 这就像云端的魅力一样 但是 我的本
  • 无法在 Windows 10 中安装 sdkmanager

    我正在尝试单独安装 sdk 管理器以便与 Eclipse 一起使用 我下载了谷歌提供的zip文件 命令行工具 win 6200805 latest zip from https developer android com studio 但当
  • 使用scrapyd有什么优势?

    scrapy 文档说 Scrapy 附带一个名为 Scrapyd 的内置服务 它允许您部署 也称为上传 您的项目并使用 JSON Web 服务控制其蜘蛛 使用 scrapyd 在一致性方面有一些优势吗 Scrapyd 允许您通过方便的 We
  • 使 bash 中的命令超时,避免不必要的延迟

    这个答案 to 命令行命令在一定时间后自动终止命令 提出了一种 1 行方法来使 bash 命令行中长时间运行的命令超时 path to slow command with options sleep 5 kill 但给定的 长时间运行 命令
  • Django 表命名约定。我可以改变它的行为吗?

    当 Django 创建表时 它会为它们提供 app class 形式的名称 我正在为 Django 安装改造一个不同的 但内容基本相似 数据库 我的表名称没有以 app 开头 我可以相应地重新创建我的数据库及其表 但我想看看 Django
  • 页面退出时弹出框

    我想做的是在页面退出或导航离开时创建一个弹出框 现在我有 我有两个问题 仅当您实际离开页面 刷新 新 URL 等时 它才会显示该框 如果您退出选项卡或浏览器 则不会弹出该框 无论您按哪个按钮 它只会将您发送到
  • 在关联文件中更改新版本的版本号(文档)

    我很想知道你们是如何处理的修改版本号对于新版本问题 如何处理关联文件 例如手册页等 中的版本号 该软件是使用 gnu 工具链构建的 因此 autoconf automake 等可用并用于应用程序的版本号 这样信息就可以被重用 git 被用作
  • Rails 中处理无效表单提交的正确方法

    我是 Rails 新手 不确定我是否同意我在一些教程中完成的工作方式 该问题与如何处理无效的表单提交有关 标准的做事方式似乎是 class ThingsController lt ApplicationController POST thi
  • 如何从 bash shell 脚本中的一行中提取单词[重复]

    这个问题在这里已经有答案了 我想从 bash 脚本中的句子中提取一个单词 它使用逗号和空格作为分隔符 ex date crossed 122 name foo userid 234567 sessionid 2233445axdfg5209
  • AFNetworking 2.0 POST 问题,Cocoa 错误 3840(JSON 文本未以数组开头...)

    我正在尝试在本地服务器上调用 api php 使用 MAMP 正在调用服务器端 api php 但 php 代码中的 POST 内容包含以下错误 Error Domain NSCocoaErrorDomain Code 3840 The o
  • 实现自定义 MVC 基本视图页面

    我正在尝试实现 MVC 自定义基本视图页面以 覆盖 User财产种类 这将使我的CustomPrincipal在任何视图中均可访问的类型 在网上搜索后 我发现Phil Haack 关于实现自定义基本视图页面的说明 我完全按照说明进行操作 但