Asp.net mvc 5 MVC 5/Bind dropdownlist,包括禁用的值
(我的第一个问题给我留下了深刻的印象:)) 首先,请原谅我的英语,我是法国人;) 我的问题是关于DropDownList,它链接(绑定)到对象O(在视图V中编辑)的必填字段(F,int),并包含元素列表(LE),其中一些元素被禁用 我希望在视图中显示的行为:Asp.net mvc 5 MVC 5/Bind dropdownlist,包括禁用的值,asp.net-mvc-5,model-binding,dropdownlistfor,Asp.net Mvc 5,Model Binding,Dropdownlistfor,(我的第一个问题给我留下了深刻的印象:)) 首先,请原谅我的英语,我是法国人;) 我的问题是关于DropDownList,它链接(绑定)到对象O(在视图V中编辑)的必填字段(F,int),并包含元素列表(LE),其中一些元素被禁用 我希望在视图中显示的行为: 当我创建一个对象时,如果没有,验证必须触发 在列表中选择(确定) 创建对象时,列表中禁用的元素不能是可选的(确定) 编辑对象时,如果该字段在启用值之间,则相同的行为(确定) 编辑对象时,如果该字段在禁用值中,则在查看时必须显示并选择该字段
- 当我创建一个对象时,如果没有,验证必须触发 在列表中选择(确定)
- 创建对象时,列表中禁用的元素不能是可选的(确定)
- 编辑对象时,如果该字段在启用值之间,则相同的行为(确定)
- 编辑对象时,如果该字段在禁用值中,则在查看时必须显示并选择该字段(确定)
- 当我编辑一个对象时,如果该字段在禁用的值中,当我发布数据时,客户端验证必须授权禁用的值进行验证(可以使用一些javascript)
- 编辑对象时,如果字段在禁用值中,则 发布数据时,模型包含链接到 dropdownlist,即使我包含一个Id为的隐藏字段
视图:
<div class="col-md-3">
@Html.DropDownListFor(model => model.Currency.Id, (SelectList)ViewBag.Currencies, new { @class = "form-control ignore-desactivated" })
@Html.ValidationMessageFor(model => model.Currency, "", new { @class = "text-danger" })
</div>
版本时的来源:
<div class="col-md-3">
<select class="form-control ignore-desactivated" data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." id="Currency_Id" name="Currency.Id">
<option value="-1"></option>
<option disabled="disabled" value="9">Angolan kwanza (desactivated)</option>
<option value="10">Argentine peso</option>
<option disabled="disabled" selected="selected" value="1">Euro (desactivated)</option>
<option disabled="disabled" value="56">Gibraltar pound (desactivated)</option>
<option value="3">Great Britain Pound</option>
</select>
<span class="field-validation-valid text-danger" data-valmsg-for="Currency" data-valmsg-[replace][1]="true"></span>
</div>
安哥拉宽扎(未激活)
阿根廷比索
欧元(未激活)
直布罗陀镑(未激活)
英国镑
我要保存数据时的模型:
。。。问了几分钟后,我找到了答案(感谢我的同事们) 我不知道这是否正确,但在帖子开始之前,我编写了一些js代码来删除禁用的项目:
//Delete disabled elements of lists before submit
$('form').submit(function () {
$('.ignore-desactivated').each(function () {
$(this).children().each(function () {
$(this).removeAttr('disabled');
});
})
})
//Delete disabled elements of lists before submit
$('form').submit(function () {
$('.ignore-desactivated').each(function () {
$(this).children().each(function () {
$(this).removeAttr('disabled');
});
})
})