ASP.NET MVC 中的 ViewBag 如何工作

2023-12-02

ASP.NET MVC 是如何实现的ViewBag工作? MSDN 说这只是一个Object,这让我很感兴趣,“魔法”属性如何ViewBag.Foo和魔法弦ViewBag["Hello"]实际上工作吗?

另外,我如何制作一个并在我的 ASP.NET WebForms 应用程序中使用它?

例子将非常感激!


ViewBag属于类型dynamic但是,内部是一个System.Dynamic.ExpandoObject()

它的声明如下:

dynamic ViewBag = new System.Dynamic.ExpandoObject();

这就是为什么你可以这样做:

ViewBag.Foo = "Bar";

扩展器对象代码示例:

public class ExpanderObject : DynamicObject, IDynamicMetaObjectProvider
{
    public Dictionary<string, object> objectDictionary;

    public ExpanderObject()
    {
        objectDictionary = new Dictionary<string, object>();
    }
    public override bool TryGetMember(GetMemberBinder binder, out object result)
    {
        object val;
        if (objectDictionary.TryGetValue(binder.Name, out val))
        {
            result = val;
            return true;
        }
        result = null;
        return false;
    }

    public override bool TrySetMember(SetMemberBinder binder, object value)
    {
        try
        {
            objectDictionary[binder.Name] = value;
            return true;
        }
        catch (Exception ex)
        {
            return false;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC 中的 ViewBag 如何工作 的相关文章

  • 如何在您的网站中连接两个人

    有一款名为 Verbosity 的游戏 这是一款有目的的游戏 位于此链接上www gwap com 在游戏中 他们随机连接两个玩家互相玩 游戏是玩家1应该向他的搭档 玩家2 描述一个单词 而玩家2应该猜测这个单词 我正在尝试建立一个网站来执
  • 在 ASP.NET MVC 中使用或继承 DisplayAttribute 创建自定义显示属性

    我想用DisplayAttribute with Name财产 问题是班级是sealed我无法继承它来覆盖某些方法 为什么我想要这个 我想传递一些代码以便将字符串转换为Name财产 并为语言添加一个属性 就像是 MyDisplay Code
  • 日期选择器无法与更新面板一起使用

    我的应用程序位于 asp net 3 5 中 其中我从更新面板内的日期选择器中选择日期 选择日期并单击提交按钮后 页面将被回发 发回后 当我再次尝试选择日期时 我看不到日期选择器 aspx页面上的代码
  • ASP.NET 视图中的区域?

    我正在使用 razor 引擎制作 ASP NET MVC 应用程序 我想知道是否可以使用Regions http msdn microsoft com en us library 9a1ybwek aspx在一个视图中 就像是 region
  • 回发 Asp.Net 上的动态用户控件

    我创建了一个项目 user control 它有一个文本框 按钮等 它将有意收集用户想要的项目总数 我在 page load 上动态创建了几个 user control 实例 如果您单击项目数量的添加按钮 它将添加到会话变量中 但是 当用户
  • 从异步方法同步调用 CPU 密集型方法的混乱

    我正在尝试 NET 4 5 的 async await 结构 我正在开发 RESTful Web API 解决方案 我试图弄清楚如何处理 CPU 绑定操作 1 从当前线程同步调用它 或 2 使用Task Run 让我们使用这个例子page
  • ASP.NET MVC - 临时要求除一页之外的整个站点授权的简单方法

    我正在建立一个混合了公共页面和会员专用页面的网站 登录系统按原样工作正常 不过 我想启动一个封闭的 仅限邀请的预览 并暂时要求访问者登录才能执行除欢迎页面之外的所有操作 目前我有 Authorize 某些操作方法的属性 我也可以向其他操作方
  • Membership.ValidateUser() 的目的是什么

    我一直在学习有关MembershipProvider类 我认为Membership ValidateUser 方法应该用于登录用户 然而我刚刚了解到有一个FormsAuthentication Authenticate 目的是什么Valid
  • 调用泛型类的方法

    这是上下文 我尝试编写一个映射器来动态地将域模型对象转换为 ViewModel 对象 我遇到的问题是 当我尝试通过反射调用泛型类的方法时 出现此错误 System InvalidOperationException 无法对 Contains
  • DbContext.SaveChangesAsync 异常处理

    当搭建新的脚手架时ApiController通过 Visual Studio 2013 中的异步操作和实体框架支持 某些方法可以包装DbContext SaveChangesAsync https msdn microsoft com en
  • MVC ASP.NET 或 Razor

    我对 MVC 很陌生 我对 Silver light WPF 和 MVVM 有相当多的了解 但对 MVC 知之甚少 我正在按照 Microsoft 网站上的主要教程进行操作http www asp net mvc tutorials get
  • ASP.NET 成员资格 HashAlgorithmType 默认为 HMACSHA256,那么密码是哈希键控的吗?

    我有一个 ASP NET 4 5 Web 应用程序 它使用SqlMembershipProvider 在开发过程中 有人把passwordFormat Clear 在配置中导致密码以明文形式保存 我想删除它并启用密码散列 但我想确保散列不是
  • 当我的模型为空时,如何避免视图内的 foreach 循环中出现 NullReferenceException?

    当我通过控制器传入 null 值时 我的视图中收到以下代码的 NullReferenceException 未由用户代码处理 错误 在某些情况下 我想传入 null 值 但我不希望发生这种情况时引发错误 我应该将我的代码更改为什么 最初我的
  • 如何直接在 Razor 中从 ASP.NET Identity 获取 UserId() 方法

    我的某些部分的自定义授权存在此问题Views 我不想穿上PartialView 而不是我使用If声明如下 if item CurrentComment Id Guid Parse ViewBag UserId repository IsUs
  • ASP.NET Web Api 的事件发布者

    我已经开始使用微服务 我需要创建一个事件发布机制 我计划使用 Amazon SQS 这个想法很简单 我将事件存储在与聚合相同的事务中的数据库中 如果用户更改他的电子邮件 事件UserChangedEmail将被存储在数据库中 我还有事件处理
  • ASP.NET MVC 防伪造令牌不安全

    在没有 ssl 的情况下向服务器发出请求时 我实际上可以看到 MVC3 框架以纯文本形式生成的验证令牌密钥 该密钥存储在名为 RequestVerificationToken Lw 的 cookie 中 在混合安全环境中 实际上可以在向非
  • 带有服务总线的 SignalR Azure 云服务

    我使用 SignalR 构建了一个简单的聊天应用程序那里有教程 http www asp net signalr overview getting started tutorial getting started with signalr
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 如何在服务器上保存用户凭据以在后台运行查询

    背景 我们有一个 ASP NET Silveright Web 应用程序 silverlight客户端显示用户 图形形式的特定数据 它从服务器请求数据 问题 由于服务器必须执行底层数据库查询 获取这些数据的成本很高 因此客户端必须等待 优化
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向

随机推荐

  • 使用 vertx Web 客户端版本 4.0.0 时出现 java.lang.IllegalAccessError

    将 vertx 4 0 0 与 jdk 14 结合使用 尝试使用 vertx Web 客户端发出 REST 请求时 出现以下异常 15 56 48 294 vert x eventloop thread 0 ERROR io vertx c
  • Android如何在其他类中runOnUiThread?

    在我的应用程序中 在 MainActivity 中 有一个工作正常的线程 但是当我调用另一个类从服务器获取数据时 我无法在线程上运行 请参阅下面的代码示例 class MainActivity extends Activity implem
  • 从类库读取 web.config

    我有两个项目 1 没有接口的类库 只有一个api 2 网络应用程序 从网络应用程序中我将调用类库 api 所以我在Web应用程序中拥有所有的web config设置 但是当我调试时它总是返回空值 这里是代码片段 public static
  • 如何向我的 vega-lite 图表添加辅助 Y 轴?

    这个问题展示了一种将多个时间序列添加到 vega lite 图表的方法 如何使用 Vega Lite 在轴上绘制多个变量 有没有办法将第二个系列放在辅助 Y 轴上 我说的是在右侧放置另一个 Y 轴 以便时间序列可以具有不同的尺度 但仍然可以
  • VSCode 安装失败 - 无法提取安装程序

    VSCodeSetup exe Installation has failed Failed to extract installer 我无法安装或打开安装日志 尝试在 Windows 8 1 Enterprise 上安装 我刚刚下载了 V
  • 如何获取多个页面的数据?

    我的项目基于 React redux redux saga es6 我尝试从此 API 获取数据 如您所见 此特定 API 调用显示的数据限制为每页 100 条数据 分布在 40 个页面上 根据这个答案 它说您可以将限制扩展到每页最多 30
  • Perl 的 Capture::Tiny::capture() 是否避免了使用 system() 时所需的磁盘 io?

    当从 Perl 脚本调用外部程序时 Capture Tiny 是否避免了使用 system 时所需的磁盘 io 使用两者时我得到的性能基本相同 一位同事正在使用我的代码 并告诉我它正在攻击他的磁盘 我 也许 在本地计算机上运行并写入本地磁盘
  • C#:继承布尔值?

    如何 我可以从布尔值继承吗 或者使我的类与带有 运算符的布尔值相当 class MyClass Boolean public MyClass this true class Program public Program MyClass my
  • 如何处理Azure Python Function异常处理?

    我是 Python 异常处理新手 我该如何正确try下列 except if get entity失败 但通过如果Status 200 这是我所在的位置 但它不正确 希望您能举例说明 from azure cosmosdb table ta
  • 如何使用 FileReader javascript 读取 XML 文件?

    我需要从 ODF 文件获取 XML 我尝试使用 FileReader readAsText 和 readAsBinaryString 但它不起作用 文件读取器读取文本返回 odf 文件的一些特殊字符 with 读取为二进制字符串 var r
  • JavaScript 中的函数组合

    在下划线 低破折号等库中实现函数组合有什么好处 类似于 var compose function var funcs arguments return function var args arguments for var i funcs
  • 获取404页面的原始url

    所以我发现了这两个问题 在 IIS7 404 重定向页面中访问原始 URL 获取导致 404 的请求页面的 URL 但它们都是不同的语言 有没有办法获取导致 404 消息之类的地址在自定义消息中使用 例如 如果我要求example com
  • 在C#中将SID转换为用户名

    在 net中 我可以创建一个NTAccount使用域和用户名 并获取其 SID 但我无法使用翻译功能将 SID 转换回 NTAccount new SecurityIdentifier stringSid Translate typeof
  • 如何向 tcp 服务器发出 http 请求?

    我想要建立一个侦听端口 443 的 TCP 服务器 以便它可以接收 HTTP 请求并回发 现在我正在使用 Apache 和 PHP 以正常方式执行此操作 但是是否可以在没有 Web 服务器的情况下执行此操作 例如 我用 C NET 构建了一
  • 使用 Linq to Entities 将 UTC 转换为本地时间

    我需要在 LINQ to Entities 查询中将字段从 UTC 转换为本地时间 但它无法识别我打算使用的方法 System DateTime ToLocalTime 我的查询是这样的 选择本地当天不存在任何其他请求尚未解决的请求 考虑到
  • 在 Delphi 中使用 XPath 查找元素

    我试图在 Delphi 中的 XML 文档中查找元素 我有这段代码 但它总是在日志中显示 0 个元素 function TForm1 KannaSidu Boolean var Doc IXMLDOMDocument List IXMLDo
  • 使用 OpenSL 为所有 Android 设备提供 8KHz 采样率的语音通信

    我需要创建一个 VOIP 应用程序 并且我正在使用 OpenSL ES 我需要为所有 Android 设备以 8KHz 采样率捕获和播放 pcm 音频数据 但是 当我以 8KHz 采样率捕获音频并同时播放 语音通信 时 它会产生噪音 并且对
  • 为什么 shell case 语句中的第一个模式不能是多重模式?

    The 标准描述 of the case声明说 The format for the case construct is as follows case word in pattern1 compound list pattern patt
  • 圆形/角度滑块

    A 最近的问题让我想起了不久前我尝试编写的一些代码 目的是制作一个CircularSlider 可用于动态对象中类似角度变量的对象 我的解决方案的框架 如下 来自ValueThumbSlider 定义在高级操作功能教程 主要区别在于Valu
  • ASP.NET MVC 中的 ViewBag 如何工作

    ASP NET MVC 是如何实现的ViewBag工作 MSDN 说这只是一个Object 这让我很感兴趣 魔法 属性如何ViewBag Foo和魔法弦ViewBag Hello 实际上工作吗 另外 我如何制作一个并在我的 ASP NET