Html.DropDownList - 禁用/只读

ETF*_*fax 63 asp.net-mvc

在使用MVC Html.DropDownList时,我需要设置什么选项才能只读下拉框?

我尝试过......

Html.DropDownList("Types", Model.Types, new { _Enabled = "false" })
Run Code Online (Sandbox Code Playgroud)

......沿着这条线路有很多不同的东西; 唉,没有快乐!

我认为这将是一个简单的.....它可能是!

Tad*_*kys 131

试试这个

Html.DropDownList("Types", Model.Types, new { @disabled = "disabled" })
Run Code Online (Sandbox Code Playgroud)

  • 但通过这样做,下拉列表的绑定值不会到达控制器. (38认同)
  • 但这会阻止DDL值与表单一起提交. (7认同)
  • 那是小狗.谢谢. (3认同)
  • 如果您想在控制器上获取值,请为 DropdownList 添加隐藏字段。 (2认同)
  • @VishnuVikraman,[这个](/sf/ask/794608811/) 可能是你的完美答案, (2认同)

小智 78

关于渔获22:

如果我们使用@disabled,该字段不会发送到该操作(Mamoud)如果我们使用@readonly,下拉错误仍然允许您更改值

解决方法:使用@disabled,并在下拉列表后添加隐藏的字段:

@Html.HiddenFor(model => model.xxxxxxxx)
Run Code Online (Sandbox Code Playgroud)

然后它被真正禁用,并发送到行动.

  • 这是我发现的最有用的解决方案.我不知道为什么这么少的选票. (12认同)

Muh*_*hir 6

<script type="text/javascript">
$(function () {
        $(document) .ajaxStart(function () {
                $("#dropdownID").attr("disabled", "disabled");
            })
            .ajaxStop(function () {
                $("#dropdownID").removeAttr("disabled");

            });

});
</script>
Run Code Online (Sandbox Code Playgroud)