我正在尝试将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);
这是表现明智的好方法吗?
答案 0 :(得分:1)
我相信你在寻找:
sb.AppendLine(html.LabelFor(expression.Compile()()).ToHtmlString());