Num*_*man 3 lambda html-helper asp.net-mvc-4
我有一个自定义的HtmlHelper扩展,它根据teh帮助器输入参数呈现控件.
我处于这样的情况,我能够渲染任何控件,除了CheckBox.当CheckBoxFor助手接受时,Expression<Func<TModel, bool>>
我需要一种方法将Func的返回类型转换为bool,如标题中所述.
你可以翻译lambda:
public static class HtmlExtensions
{
public static IHtmlString MyHelper<TModel, TProperty>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TProperty>> ex
)
{
if (typeof(TProperty) != typeof(bool))
{
throw new InvalidOperationException("You can only generate checkboxes with boolean properties on your view model");
}
var boolExpression = Expression.Lambda<Func<TModel, bool>>(ex.Body, ex.Parameters);
return html.CheckBoxFor(boolExpression);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以在模型的布尔属性上使用帮助器:
@Html.MyHelper(x => x.SomeBooleanProperty)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1051 次 |
| 最近记录: |