【问题标题】:How to bind selected value of a DropDownListFor to selectedId property in viewmodel, when selected value of DropDownListFor is changed by Jquery当Jquery更改DropDownListFor的选定值时,如何将DropDownListFor的选定值绑定到viewmodel中的selectedId属性
【发布时间】:2014-10-25 00:09:27
【问题描述】:

我在 UI 上有两个地址 Mailing 和 Business,我正在实施“与上面相同”复选框,用户选中此复选框,下面的 Business 地址将使用 Jquery 填充上面的邮寄地址。我使用 @Html.DropDownListFor() 表示州。

对于这个 UI,我有一个 ViewModel,它的 int selectedBusinessId {get; set;} 属性设置为 [必需]。

当用户手动更改下拉值时,DropDownListFor 将选定的值绑定到上述 viewmodel 属性,这里没有问题。因此,当用户选择“与上述相同”复选框时,Business Address State 下拉菜单会设置为 Mailing Address State USING Jquery,但问题是在提交时会引发模型错误,即 State isRequired。

那么当jquery改变DropDownListFor的选择值时,如何将DropDown的选择值绑定到viewmodel int selectedBusinessId?

ViewModel 类

 public class ContactInformationViewModel
{

    [Required(ErrorMessage = "State is required")]
        public string mailingAddrSelectedState_Id { get; set; }
        public IEnumerable<SelectListItem> states {get; set;}
        [Required(ErrorMessage = "State is required")]
        public string businessAddrSelectedState_Id { get; set; }
        [Required(ErrorMessage = "State is required")]
        public string faaAddrSelectedState_Id { get; set; }
    }

用户界面

邮寄地址状态下拉菜单

@Html.DropDownListFor(model => model.mailingAddrSelectedState_Id, Model.states, "-- Select --", new { tabindex = 6 })   

企业地址状态下拉菜单

@Html.DropDownListFor(model => model.businessAddrSelectedState_Id, Model.states, "-- Select --", new { tabindex = 14 })                            

因此,当用户选择“与上述相同”复选框时,我使用 jquery 选择 Business Address State 作为 Mailing 的 State,但我认为我还需要将选定的 Business Address State 绑定到 ViewModel 中的 businessAddrSelectedState_Id 以便在提交时它将具有选定的州。

JQuery

 $('#Same_as_above').change(function(){
        if (this.checked == true)
        {
            var mail_state = $('#mailingAddrSelectedState_Id :selected').val();
            $('#businessAddrSelectedState_Id').val(mail_state);
            $("#businessAddrSelectedState_Id").attr("disabled", "disabled"); 
        }

谢谢

【问题讨论】:

  • 到目前为止你做了什么?贴一些代码!
  • 这里有一些代码,谢谢迈克尔
  • "....to Mailing Address State USING Jquery" 如何使用 Jquery?向我们展示您的代码。
  • 这里是 jquery 代码,谢谢 TCHdvlp

标签: jquery model-view-controller mvvm binding dropdownlistfor


【解决方案1】:

我找到了罪魁祸首。模型无法绑定它,因为我在 jquery 中禁用了业务地址状态下拉菜单。我对此发表了评论并顺利运行。我认为我不会禁用它,而是将其设为只读。

 $('#Same_as_above').change(function(){
    if (this.checked == true)
    {
        var mail_state = $('#mailingAddrSelectedState_Id :selected').val();
        $('#businessAddrSelectedState_Id').val(mail_state);
     // $("#businessAddrSelectedState_Id").attr("disabled", "disabled");
    }

感谢大家抽出宝贵时间查看我的问题,非常感谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多