从 HtmlHelper 获取对象实例

发布于 2024-10-14 09:50:41 字数 579 浏览 2 评论 0原文

在 htmlhelper 中使用以下代码可以为我提供一些元数据。 它甚至还有容器类型。 我想要的是容器实例。在表达式中

x => x.FirstName

我想获取 x 实例。

有什么办法可以做到这一点吗?

    public static MvcHtmlString DisplayEditorFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, string templateName, string htmlFieldName, object additionalViewData)
    {
        var result = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
        ...
    }

结果具有类型和许多其他信息,但不具有实例。 表达式本身必须在主体中具有这种约束。我该如何梳理它?

Using the following code in an htmlhelper gives me some metadata.
It even has the container type.
What I want is the container instance. In the expression

x => x.FirstName

I want to get at the x instance.

Is there any way to do that?

    public static MvcHtmlString DisplayEditorFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, string templateName, string htmlFieldName, object additionalViewData)
    {
        var result = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
        ...
    }

result has the type, and a host of other information, but not the instance.
The expression itself must have that bound in the body. How do I tease it out?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

み零 2024-10-21 09:50:41

这太愚蠢了。

html.Model contains the object instance.

此外,

var value = expression.Compile().Invoke(html.ViewData.Model);

还将为您提供使用 lambda 评估的模型实例的值。

This was stupid.

html.Model contains the object instance.

moreover

var value = expression.Compile().Invoke(html.ViewData.Model);

will give you the value of the evaluated model instance using the lambda.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文