2013-05-29 3 views
1

Мне нужно реализовать пользовательский помощник, который вернется для строки, которая может иметь значение «1» или « 0 "вместо CheckBox вместо TextBox. Таким образом, в пользовательском помощнике у меня есть:asp.net mvc convert 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 "' имеет смысл только для свойства string, не так ли? –

+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.

Смежные вопросы