как преобразовать строковое значение в флажке html в логическое значение?

#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: Любопытно, почему это?