Asp.net mvc 5 MVC 5/Bind dropdownlist,包括禁用的值

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),其中一些元素被禁用 我希望在视图中显示的行为: 当我创建一个对象时,如果没有,验证必须触发 在列表中选择(确定) 创建对象时,列表中禁用的元素不能是可选的(确定) 编辑对象时,如果该字段在启用值之间,则相同的行为(确定) 编辑对象时,如果该字段在禁用值中,则在查看时必须显示并选择该字段

(我的第一个问题给我留下了深刻的印象:))

首先,请原谅我的英语,我是法国人;)

我的问题是关于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');
        });
    })
})