对同一模型两次使用ASP-FOR

时间:2018-11-01 13:24:27

标签: c# asp.net-core-mvc

如果在“国家/地区”下拉列表中选择了“美国”,则我必须执行一项任务,以便对美国各州实施该下拉列表。

为此,我实现了两个控件,非美国州的文本框和美国州的下拉框

        <input class="form-control" type="text" asp-for="BIS232Request.JSONData.RequestingOrg.State" />
        <select class="form-control" asp-for="BIS232Request.JSONData.RequestingOrg.State" id="HeadquartersState"></select>
        <span asp-validation-for="BIS232Request.JSONData.RequestingOrg.State" class="alert-danger"></span>

但是,状态只有一个模型属性

[Required]
[DisplayName("State")]
public string State { get; set; }

如何参考和正确验证文本框和下拉列表的状态说明

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

问题很简单,就是输入和选择的值都被发布,并且其中一个值将始终覆盖发布数据中的另一个。您需要添加一些JavaScript才能根据国家/地区禁用一个或另一个。如果输入或选择具有disabled属性,它将不会发布其值,仅保留另一个的值。

$('[name$=Country]').on('change', function () {
    if ($(this).val() === 'US') {
       $('select[name$=State]').removeAttr('disabled');
       $('input[name$=State]').attr('disabled', true);
    } else {
       $('input[name$=State]').removeAttr('disabled');
       $('select[name$=State]').attr('disabled', true);
    }
});