ExpressionHelper.GetExpressionText(表达式)不返回我的属性的名称

2024-04-16

我已经实现了 MVC 扩展来格式化应用程序中的数字。它基于找到的代码here https://stackoverflow.com/a/7766382/455492。并且如下

public static MvcHtmlString DecimalBoxFor<TModel>(this HtmlHelper<TModel> html, Expression<Func<TModel, double?>> expression, string format, object htmlAttributes = null)
{
    var name = ExpressionHelper.GetExpressionText(expression);   
    double? dec = expression.Compile().Invoke(html.ViewData.Model);
    var value = dec.HasValue ? (!string.IsNullOrEmpty(format) ? dec.Value.ToString(format) : dec.Value.ToString()): "";
    return html.TextBox(name, value, htmlAttributes);
}

当我使用以下 Razor 语法行调用它时

@Html.DecimalBoxFor(model => Model.PointAttributes[i].Data.Y,"0.000", new { @class = "span1 number" })

我收到一个异常,因为我的扩展中的变量“名称”是一个空字符串。我尝试将 var name 行更改为此,但它只提供了“Y”的属性名称,而不是我需要为 MVC 绑定模型的完整“Model.PointAttributes[i].Data.Y”。

var name = ((expression.Body is MemberExpression ?((MemberExpression)expression.Body).Member : ((MemberExpression)((UnaryExpression)expression.Body).Operand).Member)).Name;

尝试使用这个功能:

    static public string GetExpressionText(LambdaExpression p)
    {
        if (p.Body.NodeType == ExpressionType.Convert || p.Body.NodeType == ExpressionType.ConvertChecked)
        {
            p = Expression.Lambda(((UnaryExpression)p.Body).Operand,
                p.Parameters);
        }
        return ExpressionHelper.GetExpressionText(p);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ExpressionHelper.GetExpressionText(表达式)不返回我的属性的名称 的相关文章

随机推荐

  • apache 的子进程返回退出代码 -6,但没有 stdout 或 stderr

    当从 apache 进程运行 git status 甚至 ls 时 我经常得不到标准输出或错误 并且退出状态代码为 6 其他时候 它就有效 有什么想法为什么会发生这种情况或者这意味着什么吗 如果您所在的网络有很多人 则可能会耗尽可用的并发连
  • ASP.Net 动态切换母版页

    以前从未需要这样做 但是是否可以动态设置 更改页面正在使用的母版页 有一个旧的 asp net web 表单项目 我为它创建了一个新的引导模板 但老板希望给人们机会打开新的模板 而不是强迫他们使用 我建议您创建一个 BasePage 类 而
  • Java 中的全局异常处理程序

    我正在考虑使用以下命令为我的 Android 移动应用程序 使用 Java 语法 设置一个全局默认异常处理程序Thread setDefaultUncaughtExceptionHandler 称呼 我正在考虑只向用户显示一个带有适当消息的
  • 更改值 recyclerview.adapter 并将其保存到 mainactivity 中的 textview 中?

    当我更改 recyclerview adapter 的值时 我想将其值设置为 mainactivity 中的 textview 该怎么做 it will be like this 从我的 json 中检索回收数据 因此它将是随机的且数据很多
  • Flutter:如何导入现有的 Flutter 项目作为 gradle 项目

    如何导入现有的 Flutter 项目作为 gradle 项目 导入项目 向导要求 Gradle 主路径 我的系统中安装了 gradle 但这里需要设置什么 哪个路径 这是我正在尝试的 Error 我也遇到过这个问题 我必须在 Android
  • 使用 scikit-learn OneClassSVM 时获取每个新观察结果为异常值的概率

    我是 scikit learn 和 SVM 方法的新手 我的数据集与 scikit learn OneClassSVM 配合良好 可以检测异常值 我使用观察来训练 OneClassSVM 所有这些都是 内点 然后使用 Predict 对我的
  • WatchService 和 SwingWorker:如何正确执行?

    WatchService 听起来像是一个令人兴奋的想法 不幸的是 它似乎像教程 api 中警告的那样低级 而且并不真正适合 Swing 事件模型 或者我错过了一些明显的东西 非零概率 获取代码来自教程中的 WatchDir 示例 http
  • 在 Android 应用程序中播放 .wav/.mp3/.ogg 音频文件时出现延迟

    我编写了一个用于播放 20 毫秒音频剪辑 wav 格式 的应用程序 它只是重复播放声音片段 1000 次 但由于延迟 它的播放次数在 978 到 984 之间 我还尝试过其他音频格式 ogg mp3 等 我想减少延迟并获得可靠的号码 我在下
  • Android drawable-hdpi-night 文件夹

    Please help I am playing with small example of day night mode in Android So far so good I have 2 images of multiple size
  • 发送邮件到 mailtrap.io

    我正在使用 Laravel 5 1 我在我的申请中创建了联系页面 因此用户可以发送电子邮件 这里我使用了mailtrap io 当我创建时它就起作用了 我的意思是发送邮件到mailtrap io没有问题 但今天 当我再次检查时 它向我显示了
  • UIBezierPath 具有圆角边缘的三角形

    我设计了以下代码来生成UIBezierPath 该路径在CAShapeLayer掩盖一个UIView 请注意 视图的高度和宽度是可变的 这段代码生成一个具有锐利边缘的三角形 但我想使角变圆 我已经尝试过addArcWithCenter li
  • 为spark master指定local[n1,n2,n3]时,三个参数是什么?

    对于启动 Spark 我看到 master local n1 n2 n3 其中 n1 n2 和 n3 是整数 这些指的是什么 主规范解析为SparkContext createTaskScheduler https github com a
  • java中如何判断一个字符串是否至少包含一个字母?

    我想要这样的验证 我的字符串必须至少包含一个字母表 我正在使用以下内容 String s 111a11 boolean flag s matches a zA Z 旗帜给了我false虽然a在我的字符串中s 您可以使用 a zA Z wit
  • Git commit - 在有或没有消息文件的情况下处理类似的#注释

    我已经暂存了一个文件readme txt 调用时 git commit 它会打开我的编辑器并显示一条预定义的消息 在第一行中 我添加的只是为了强制 stackoverflow 显示此空行 Please enter the commit me
  • 将 javascript 函数应用于可拖动副本

    我想应用名为 copy contenue 的函数来更改 div 父 id 在我拖动原件后创建的副本上 但我的脚本更改了原件而不是副本我也尝试了 ui helper 来代替它 但没有任何反应 model 1 draggable connect
  • Android RecyclerView 中项目之间的空间过大

    我正在使用 RecyclerView 从每次在 EditText 中按 Enter 键时填充的对象列表中加载数据 但我面临的问题是 我添加的第一个项目显示正常 当我添加第二个项目时 它显示第一个和第二个项目之间有很大的差距 如果我继续添加项
  • jqgrid 掩码十进制数字单元格

    我的 jgrid 中有一个 float 类型的列 我想在用户输入单元格时屏蔽列单元格 例如 掩码应为 99999 99 当 9 0 9 之间的任何数字时 我希望该点左侧最多有 5 位数字 该点右侧最多有 2 位数字 并且可以输入少于最大值的
  • 由于 Cloud Foundry 上的 SSL 错误,JaxB 无法解组?

    我有一个 Web 应用程序 使用 thymeleaf Spring Boot AngularJS 和 Oracle sql Developer db 在本地 我能够连接并从 Oracle 获取值 但是当我将应用程序推送到 Cloud Fou
  • 经典 ASP #include virtual 不起作用

    我们正处于从 IIS6 2003 到 IIS8 2012 的迁移过程中 我们必须维护一些经典 ASP 以及 ASP 和 NET 应用程序 完整的应用程序似乎运行良好 例如 我进入 IIS 右键单击文件夹并执行 转换为应用程序 但我们的站点严
  • ExpressionHelper.GetExpressionText(表达式)不返回我的属性的名称

    我已经实现了 MVC 扩展来格式化应用程序中的数字 它基于找到的代码here https stackoverflow com a 7766382 455492 并且如下 public static MvcHtmlString Decimal