2013-05-29 9 views
1

"1"값 또는 "1"값을 가질 수있는 문자열을 반환하는 사용자 지정 도우미를 구현해야합니다. 0 "TextBox 대신 CheckBox. 그래서 사용자 지정 도우미 있음 :asp.net mvc expression <Func <TModel, TProperty >> to Expression <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을 기존 속성에 사용할 수 없습니다.

"0"또는 "1"로 String 속성을 상상해보십시오. 폼에 값을 게시 할 때

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) 

을 사용할 수 있습니다, 당신은 MyBooleanProperty의 값에 따라, MyProperty에 값을 설정 당연히해야합니다.

관련 문제