【问题标题】:asp.net mvc, dropdownlist, jqueryasp.net mvc,下拉列表,jquery
【发布时间】:2012-05-27 18:26:29
【问题描述】:

大家好,有一个非常有趣的情况。

我有一个视图模型,它需要下拉列表中的媒体类型 *通过下拉列表生成的方式

@Html.DropDownListFor(m => m.MediaType, Model.MediaTypeList)

当我手动填写表格时,表格的所有值都可以,并且功能按应有的方式工作。

但后来我实现了一个 jquery 函数来设置下拉列表的值,每当您上传文件时它会自动检测它具有什么媒体类型。

function setValueToDropDown(media){                                        
    $('#MediaType').attr('disabled','');   
    var value = media;
    $('#MediaType').val(value);   
}

当我提交域验证时告诉我该字段是必需的,即使选择了下拉列表选项并且当我在控制台中执行一个函数来验证它的值不是 null 时。

alert($('#MediaType').val()) 

所以我不明白为什么当我动态地将值分配给下拉列表时,mvc 无法识别它。我到处找,我找不到问题。

【问题讨论】:

  • value 是您要选择的选项的正确吗?或者它在那个选项中表示测试?
  • 在这种情况下,值是我要选择的值,我只是这样放一个断点,然后查看 firebug 中的值,我现在意识到它看起来有点假,因为我可以从参数中查看媒体值
  • 谢谢你最后决定创建一个隐藏的输入字段并将其映射到我的视图模型中,我已经花了很多时间在这个
  • 关于您接受的答案。你能解释一下它对你有什么帮助吗?看起来它完全和你的代码一样。

标签: jquery asp.net asp.net-mvc asp.net-mvc-3 html-helper


【解决方案1】:

这应该足以启用和设置<select> 元素的值。

var setValueToDropDown = function(media) {
  $('#MediaType').prop('disabled', false).val(media);
};

你应该使用.prop() 来管理像disabled 这样的属性,因为版本1.6。 还要确保在 DOM 准备好等之后运行脚本。;)

【讨论】:

    【解决方案2】:

    我不知道你运行的脚本是什么样子的,也不知道它做了什么。但也许脚本正在寻找value 属性 而不是value 属性

    试试这个:

    function setValueToDropDown(media){                                        
        $('#MediaType').attr('disabled','');   
        var value = media;                    // Why do you save media in value...?
        $('#MediaType').attr("value", value);   
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多