MVC 5 /绑定下拉列表,包括禁用值

时间:2017-01-13 08:48:47

标签: asp.net-mvc-5 model-binding dropdownlistfor

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

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

我的问题是关于DropDownList,它链接(绑定)到对象O的必需字段(F,int)(在视图V中编辑)并包含元素列表(LE),其中一些被禁用。 / p>

视图中我想要的行为:

  • 当我创建一个对象时,验证必须触发,如果没有 在列表中选择(确定)
  • 当我创建一个对象时,列表的禁用元素不能是可选择的(OK)
  • 当我编辑对象时,如果该字段在启用的值中,则表现相同(OK)
  • 编辑对象时,如果该字段属于禁用值,则必须在查看时显示并选择(确定)
  • 当我编辑一个对象时,如果该字段是禁用值,当我发布数据时,客户端验证必须授权禁用的值进行验证(使用一点点javascript即可)

我的问题:

  • 当我编辑一个对象时,如果该字段是禁用的值,那么当我 发布数据后,模型包含null,用于链接到的字段 即使我在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>

JS:

$(function () {
    $('form').validate().settings.ignore = '.ignore-desactivated';
});

版本来源:

<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>

我希望保存数据时的模型:

https://i.stack.imgur.com/jQ9aH.png

1 个答案:

答案 0 :(得分:0)

......我在问了几分钟后找到答案(感谢我的同事们)......

我不知道这是否正确,但是在帖子发布之前删除禁用项目的一些小js代码:

//main
<main>
    <router-outlet></router-outlet>
</main>

//child
<div>
   <google-map></google-map>
   <router-outlet></router-outlet> //add resolve here
</div>