首页 > 解决方案 > 在 MVC 5 中,如何根据另一个下拉值删除所需的属性?

问题描述

目前,表单正在按预期工作,直到您提交带有值为“2”的 Usage_Status 下拉选择的表单,然后切换到任何其他值并再次提交。javascript 验证消息“分配的用户字段是必需的。” 在下拉列表中切换值并再次提交后出现并且不会消失。是否可以删除所需的属性,或者在选择“2”的条件下设置它?

HTML:

<div class="row">
        <div class="form-group col-sm-4">
            @Html.LabelFor(model => model.Usage_Status, new { @class = "control-label col-md-12" })
            <div class="col-md-10">
                @Html.DropDownList("Usage_Status", new SelectList(statuses, "ID", "Name"), new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.Usage_Status)
            </div>
        </div>

        <div class="form-group col-sm-4">
            @Html.LabelFor(model => model.Assigned_User, new { @class = "control-label col-md-12" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Assigned_User, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Assigned_User)
            </div>
        </div>

        <div class="form-group col-sm-4">
            @Html.LabelFor(model => model.Department, new { @class = "control-label col-md-12" })
            <div class="col-md-10">
                @Html.DropDownList("Department", new SelectList(departments, "ID", "Name"), string.Empty, new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.Department)
            </div>
        </div>
    </div>

JavaScript:

$(document).ready(function () {
$('#Usage_Status').change(function (e) {
    //If item is being used, require a user and department. Otherwise, disabled those fields.
    if ($('#Usage_Status').val() == "2") {
        $('#Assigned_User').rules('add', 'required');
        $('#Assigned_User').removeAttr('disabled');
    } else {
        $('#Assigned_User').rules('remove', 'required');
        $('#Assigned_User').removeAttr('required');
        $('#Assigned_User').attr('disabled', 'disabled');
    }

});

标签: jqueryasp.net-mvcdata-annotations

解决方案


如果您正在进行条件验证,例如表单中的一个字段的值定义了另一个字段的验证,则您需要一个额外的库。我使用富有表现力的注释


推荐阅读