#asp.net #html #asp.net-mvc-2 #checkbox
#asp.net #HTML #asp.net-mvc-2 #флажок
Вопрос:
у меня есть группа флажков, где она имеет три разных значения. сохраненное и не сохраненное — это логическое значение, а «ожидание» — это строковое значение. я передаю строковое значение в блок проверки. у меня ошибка, которая гласит, что не удается преобразовать bool в string…
Статус
<div class="field forCheckbox">
<%:Html.CheckBoxFor(model => model.Stored)%>
<%:Html.LabelFor(model => model.Stored)%>
</div>
<div class="field forCheckbox">
<%:Html.CheckBoxFor(model => model.Not Stored)%>
<%:Html.LabelFor(model => model.Not Stored)%>
</div>
<div class="field forCheckbox">
<%:Html.CheckBoxFor(Convert.boolean(model=>model.Waiting))%>
<%:Html.LabelFor(model=>model.Waiting) %>
</div>
как мне это сделать?
Ответ №1:
Я согласен с ответом balexandre, но я думаю, что лучше использовать ‘Equals’ в случае нулевого значения.
И бесполезно писать ‘cond?true:false’. ‘cond’ работает.
<div class="field forCheckbox">
<%:Html.CheckBox(model => {return "Waiting".Equals(model.Waiting)})%>
<%:Html.LabelFor(model=>model.Waiting) %>
</div>
Ответ №2:
Вы можете использовать
<%:Html.CheckBox("Waiting", Model.Waiting.ToLower() == "waiting"))%>
или добавьте в свою модель boolean
свойство:
public bool WaitingBool {
get {
if(!String.IsNullOrEmpty(this.Waiting) amp;amp;
this.Waiting.ToLower() == "waiting")
return true;
return false;
}
}
и вы можете использовать:
<%:Html.CheckBoxFor(model=>model.WaitingBool)%>
Комментарии:
1. Никогда не бывает причины писать
? true : false
2. @Slaks: Любопытно, почему это?