ASP.NET MVC2 Html.Checkbox не проверяет, когда isChecked = true - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть несколько флажков в форме. Только один из них проверяется, когда это необходимо; все остальные не проверяются независимо от того, передан ли параметр isChecked как true или false.

Флажки закодированы так:

    <%= Html.CheckBox("cbName",Model.checkvalue)%>
    <%= Html.CheckBox("cbName1",Model.checkvalue1)%>

Я прошел через код, и Model.checkValue и Model.checkValue1 оба имеют значение true, но cbName не проверено, а cbName1 проверено (на самом деле, в моем реальном приложении 'есть еще несколько флажков и ни одного проверяются - за исключением второго в форме - хотя все свойства Model верны в тесте, который я провел).

Кто-нибудь сталкивался с этим (неправильным) поведением раньше, и вы можете сообщить мне, где я иду не так, пожалуйста? Я не могу найти похожий вопрос нигде, так что я надеюсь, что я просто делаю простую ошибку, которая будет быстро исправить ...

Ответы [ 3 ]

1 голос
/ 04 сентября 2011

как использовать другой способ рендеринга кода (конечно, позже вы можете упростить этот код или создать своего собственного помощника):

<%
if(Model.checkvalue1){
%>
<%= Html.CheckBox("name", new {checked =checked }) %>
<%}else{%>
<%= Html.CheckBox("name", null) %>
<%}%>

идея 2: убедитесь, что значение, которое вы передаете, является логическим: поэтому приведение приведено как логическое

 <%= Html.CheckBox("cbName1",(bool)Model.checkvalue1)%>

идея 3 перед использованием кода

<% bool myTempValue = Model.checkvalue1; %>
<%= Html.CheckBox("cbName1",myTempValue)%>
0 голосов
/ 02 сентября 2011

Это произошло потому, что в базовых данных используется логическое значение, допускающее обнуление.

Я переключил CheckBox на CheckBoxFor и получил ошибку, изложенную в в этом вопросе , и это сказало мне, чтопроблема заключается в том, что базовые данные в настоящее время используют логическое значение, допускающее значение NULL.Поскольку этот тип данных будет переключен на ненулевое логическое значение, как только оно будет готово, мне не нужно обойти это.

Я надеюсь, что этот ответ поможет кому-то еще.

Спасибо за вклад каждого.

0 голосов
/ 01 сентября 2011

Причины такого поведения могут быть следующими:

Есть ли какой-либо параметр строки запроса с именем cbName в URL страницы? Или это POST-запрос формы? Данные строки и формы запроса (POST) имеют приоритет над явными значениями, установленными в коде.

Какой браузер вы используете? FireFox иногда сохраняет данные формы при перезагрузке страницы. Если вы установите флажок и обновите страницу, FireFox снова установит этот флажок, даже если в элементе ввода HTML отсутствует атрибут «флажок».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...