2013-05-29 99 views
1

我需要实现一个自定义帮助器,它将返回一个字符串,其值为“1”或“ 0“是CheckBox而不是TextBox。所以在定制帮手我有:asp.net mvc将表达式<Func <TModel,TProperty >>转换为表达式<Func <TModel,bool >>

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'变量?

+0

原始表达式不应该是Expression >而不是'Expression >'?这种对“1”或“2”的检查只对字符串属性有意义,不是吗? –

+0

这个问题要复杂得多,我试图简化它,并尽可能少地将代码简化为一行。帮手是为模型的值列表的属性..正如我所说,这是更复杂... –

+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价值。

相关问题