从 ASP.NET MVC Lambda 表达式获取价值

2024-03-04

我正在尝试创建自己的 HTML 帮助器,它接受一个表达式(类似于内置的 LabelFor 帮助器。我找到了当表达式与此类似时获取属性值的示例:

model => model.Forename

但是,在我的一些模型中,我想获取子元素中的属性,例如

model => mode.Person.Forename

在这些示例中,我无论如何都找不到(轻松)获取 Forename 的值。任何人都可以建议我应该如何获得这个值。

Thanks


如果您使用与 LabelFor 方法相同的模式,则表达式将始终是 Lambda 表达式,您只需执行它即可获取值。

var result = ((LambdaExpression)expression).Compile().DynamicInvoke(model);

通常,您始终可以将泛型表达式包装在 LambdaExpressions 中,然后编译并调用它们以获取值。

如果您想要的不是 Forename 的值,而是字段本身(fx. 打印出字符串“Forename”),那么您唯一的选择就是使用某种形式的表达式行走。在 C#4 中,框架提供了一个名为 ExpressionVisitor 的类,可用于此目的,但对于该框架的早期版本,您必须自己实现它 - 请参阅:http://msdn.microsoft.com/en-us/library/bb882521(VS.90).aspx http://msdn.microsoft.com/en-us/library/bb882521(VS.90).aspx

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

从 ASP.NET MVC Lambda 表达式获取价值 的相关文章

随机推荐

  • 有没有办法循环遍历 r 中的线性模型的列名称(而不是数字)?

    我有一个包含 40 个数据列 40 种不同的营养素 的数据表 还有用于绘图数字和因子的附加列 我想自动循环每个列名称并为每个列生成一个线性模型和摘要 数据列从第 10 列开始 for i in 10 ncol df for loop ove
  • 将带有 json 的 numpy 数组发送到带有请求的 Flask 应用程序

    使用请求 我需要在单个帖子中将带有 json 数据的 numpy 数组发送到我的 Flask 应用程序 我该怎么做呢 转换 numpy 数组arr到 json 时 可以将其序列化 同时保留维度json dumps arr tolist 然后
  • LIKE '%...' 如何在索引上查找?

    我期待这两个SELECT具有相同的执行计划和性能 由于有一个前导通配符LIKE 我期望进行索引扫描 当我运行这个并查看计划时 第一个SELECT行为符合预期 通过扫描 但第二个SELECT计划显示索引查找 并且运行速度快 20 倍 Code
  • 将散列数据作为散列的密钥传递再次返回不正确的结果

    我正在创建一个将使用 GAS 访问 AWS 服务的脚本 我使用实用程序库中的哈希函数来执行创建 v4 签名所需的所有哈希 这些函数似乎能够成功地对数据进行一次哈希处理 但尝试将哈希数据传递到参数中会产生不正确的结果 还有其他人遇到这个问题并
  • 在swift中实现函数

    我是 swift 的新手 试图实现一个简单的函数 该函数将最小和最大数字作为输入 并返回一个包含所有限制数字的数组 我收到错误 错误 对泛型类型 Array 的引用需要 中的参数 我可以知道我错过了什么吗 func serialNumber
  • Scikit-learn、KMeans:如何使用 max_iter

    我想了解类中的参数 max itersklearn cluster KMeans http scikit learn org stable modules generated sklearn cluster KMeans html 根据文档
  • Haskell:如何停止程序打印向左或向右

    我用 haskell 制作了一个计算器 我在 GHCi 中运行它 然而 由于最终的数字可以是整数或双精度数 我已经进行了类型声明 calc String gt Either Integer Double 然而 函数的输出总是在其前面有左或右
  • C++ 判断类是否具有可比性

    我或多或少是Java程序员 所以这可能是一个愚蠢的问题 但我没有找到任何简单的解决方案 我在 C 中有一个这样的类 template
  • JavaScript 排序方法处理大写字母

    注意到 JavaScript 可能有些奇怪的地方sort 方法 给定以下数组 var arr Aaa CUSTREF Copy a template Copy of Statementsmm Copy1 of Default Email T
  • 在 ColdFusion 中维护出站 TCP 连接池

    我希望从 ColdFusion 应用程序中大量使用 RESTful API 我不是 CF 专家 但我预计重复的 cfhttp 调用将成为瓶颈 因为我相信每次调用都会导致建立连接 发送请求 收到响应和断开连接 我很好奇 有没有办法维护一个连接
  • 在批处理文件中定义和使用变量

    我正在尝试在批处理文件中定义和使用变量 看起来应该很简单 echo off set location bob echo We re working with location 我得到的输出如下 We re working with 这里发生
  • jQuery Mobile 视口在 Windows Phone 中无法工作

    我正在 WindowsPhone 中测试 jQueryMobile 但视口无法正常工作 有一个解决方法这一页 http forum jquery com topic problem with virtual viewport size on
  • FireStore Tasks.whenAllComplete 与协程

    我想同步实现这段代码 但job join deferred await和火力基地await 不工作 有谁知道解决方案吗 CoroutineScope Dispatchers Main launch val job launch Tasks
  • 如何使用 System.Net.HttpClient 发布复杂类型?

    我有一个自定义复杂类型 我想使用 Web API 来使用它 public class Widget public int ID get set public string Name get set public decimal Price
  • 如何使用复选框更改 QGraphicsView 背景

    在此代码中 更改了QGraphicsView背景 现在当我检查 true 时我需要更改背景checkBox 当我设置为checkBox去检查true我需要像这段代码一样设置背景 当我设置时checkBox去检查false 我需要设置QGra
  • Tensorflow 2 抛出 ValueError:as_list() 未在未知 TensorShape 上定义

    我正在尝试在 Tensorflow 2 0 中训练 Unet 模型 该模型将图像和分割掩模作为输入 但我得到了ValueError as list is not defined on an unknown TensorShape 堆栈跟踪显
  • 带有 ActionCable 的 Rails 5 应用程序可以部署在 Windows 上吗?

    我有一个 Rails 5 应用程序 我计划将其部署在 Linux 上 但由于我们需要一些访问非常特定的仅限 Windows 的软件 因此我需要将其部署在 Windows Server 2012 R2 上 我的软件堆栈 或组合 应该是 Ngi
  • Scala 中的调试日志不会影响性能

    在 C C Objective C 等语言中 通常使用预处理器宏来定义日志记录机制 这些机制甚至不会为发布的二进制文件进行编译 因此不会造成性能影响 大致如下 ifdef DEBUG printf some event we want to
  • python 中的对象初始值设定项语法(c#)?

    我想知道是否有一种快速的方法来初始化Python中的对象 例如 在 c 中 您可以实例化一个对象并设置字段 属性 例如 SomeClass myObject new SomeClass variableX value variableY 1
  • 从 ASP.NET MVC Lambda 表达式获取价值

    我正在尝试创建自己的 HTML 帮助器 它接受一个表达式 类似于内置的 LabelFor 帮助器 我找到了当表达式与此类似时获取属性值的示例 model gt model Forename 但是 在我的一些模型中 我想获取子元素中的属性 例