ヘルパー入力パラメーターに基づいてコントロールをレンダリングするカスタム HtmlHelper 拡張機能があります。
私は、CheckBox 以外の任意のコントロールをレンダリングできる状況にあります。CheckBoxFor ヘルパーが受け入れるように、Expression<Func<TModel, bool>>
タイトルにあるように、Func の return-type を bool に変換する方法が必要です。
ヘルパー入力パラメーターに基づいてコントロールをレンダリングするカスタム HtmlHelper 拡張機能があります。
私は、CheckBox 以外の任意のコントロールをレンダリングできる状況にあります。CheckBoxFor ヘルパーが受け入れるように、Expression<Func<TModel, bool>>
タイトルにあるように、Func の return-type を bool に変換する方法が必要です。
ラムダを翻訳できます:
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);
}
}
これで、モデルのブール プロパティでヘルパーを使用できるようになりました。
@Html.MyHelper(x => x.SomeBooleanProperty)