Это заявление совершенно неверно:
@Html.CheckBoxFor(modelItem => (item.ReqDowngrade == "Y" ? true : false))
CheckBoxFor
помощник принимает только свойства viewmodel с типом bool
или Nullable<bool>
для привязки модели, поэтому не следует использовать приведенное выше условное выражение. Если вы хотите присвоить значение Y
или N
новому свойству bool viewmodel, связанному с CheckBoxFor
, сделайте это вместо:
ViewModel
// assumed both 'ReqDownGrade' & new bool property are in same viewmodel class
public bool CheckReqDownGrade
{
get
{
// returns false if ReqDownGrade is 'N'
return (ReqDownGrade == "Y");
}
set
{
CheckReqDownGrade = value;
CheckReqDownGrade == true ? ReqDownGrade = "Y" : ReqDownGrade = "N";
}
}
Посмотреть
@Html.CheckBoxFor(model => model.CheckReqDownGrade)
Если вы все еще настаиваете на том, чтобы не добавлять свойство bool
viewmodel, вы можете использовать HiddenFor
, стандартный элемент HTML input
с атрибутом type="checkbox"
и простой трюк JS:
View
@Html.HiddenFor(modelItem => item.ReqDowngrade, new { id = "ReqDownGrade" })
<input id="CheckReqDownGrade" type="checkbox" @(item.ReqDowngrade == "Y" ? "checked='checked'" : "") />
JS (jQuery)
<script>
$(function() {
$('#CheckReqDownGrade').click(function() {
var isChecked = $(this).is(':checked');
$('#ReqDownGrade').val(isChecked ? 'Y' : 'N');
});
});
</script>