C#MVC模型表达式的价值

时间:2014-01-16 16:06:26

标签: c# html asp.net-mvc expression extension-methods

我正在尝试将Expression<Func<TModel, TProperty>> expression,发送到我的帮助程序类。

我想从中获取值并将其呈现在html字符串中。我现在似乎无法让它工作:

  public static MvcHtmlString TextboxGroupStaticFor<TModel, TProperty>(
        this HtmlHelper<TModel> html,
        Expression<Func<TModel, TProperty>> expression,
        BootstrapInputSizes? width = BootstrapInputSizes.Defalut
        )
    {
        var placeholder = string.Empty;
        if (html.ViewData.ModelMetadata.AdditionalValues.ContainsKey("placeholder"))
        {
            placeholder = html.ViewData.ModelMetadata.AdditionalValues["placeholder"] as string;
        }


        var sb = new StringBuilder();

        sb.AppendLine("<div class=\"form-group\">");
        sb.AppendLine(html.LabelFor(expression).ToHtmlString());
        sb.AppendLine("<p class=\"form-control-static\">" + " " + "</p>");
        sb.AppendLine("</div>");
        return new MvcHtmlString(sb.ToString());
    }

使用:@Html.TextboxGroupStaticFor(x=> x.Name);

调用

但是无法弄清楚如何做表达式或类似的东西?

更新

我发现这件作品

 Func<TModel, TProperty> method = expression.Compile();

            TProperty value = method(html.ViewData.Model);

这是表现明智的好方法吗?

1 个答案:

答案 0 :(得分:1)

我相信你在寻找:

sb.AppendLine(html.LabelFor(expression.Compile()()).ToHtmlString());