asp.net mvc convert Expression <func <tmodel,tproperty =“”>&gt;表达式<func <tmodel,bool =“”>&gt; </func <tmodel,> </func <tmodel,>

时间:2013-05-29 12:52:30

标签: asp.net-mvc linq expression

我需要实现一个自定义帮助程序,它将返回一个字符串,该字符串可以是值“1”或“0”的CheckBox而不是TextBox。所以在自定义助手中我有:

    public static MvcHtmlString MyCustomHelper<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
    {
      ....
      Expression<Func<TModel, bool>> boolExpression = ??????????

      return helper.CheckBoxFor(boolExpression); 
    }

应该为'boolExpression'变量分配什么?

1 个答案:

答案 0 :(得分:1)

部分模型中的ViewModel或未映射属性将是最佳选择。

您将无法在不存在的财产上使用CheckBoxFor

想象一下你的String属性为“0”或“1”。

public string MyProperty{get;set;}


private bool myBooleanProperty_;
[NotMapped]
public bool MyBooleanProperty {
 get {
   myBooleanProperty_ = MyProperty == "1";
   return myBooleanProperty_;
}
set {
   myBooleanProperty_ = value;
}

然后你可以使用

@Html.CheckBoxFor(x => x.MyBooleanProperty)

当您在表单中发布值时,您当然会将值设置为MyProperty,具体取决于MyBooleanProperty的值。