Javascript 是否使用敲除绑定禁用select2下拉列表?

Javascript 是否使用敲除绑定禁用select2下拉列表?,javascript,jquery,asp.net-mvc,razor,knockout.js,Javascript,Jquery,Asp.net Mvc,Razor,Knockout.js,我有一个MVC Razor项目,在我看来,我有一个Html.TextBoxFor和data bind=“disable:setRoot”。此输入由Select2 jquery插件使用。 我的问题是禁用绑定无法正常工作。 这是我的代码: <div class="control-label">Category</div> <div class="input-group"> &l

我有一个MVC Razor项目,在我看来,我有一个
Html.TextBoxFor
data bind=“disable:setRoot”
。此
输入
由Select2 jquery插件使用。 我的问题是
禁用
绑定无法正常工作。 这是我的代码:

<div class="control-label">Category</div>
                    <div class="input-group">
                        <div class="input-group-addon"><label><input data-bind="checked: setRoot" type="checkbox"> root</label>
                        </div>
                        @Html.TextBoxFor(m => m.Create.IdCategory, new { id = "QuickSearchMainCategory", data_bind = "disable: setRoot, value: model.Create.IdCategory", @class = "form-control" })
                    </div>
如果我检查html,则禁用将起作用,但不会对整个select2元素起作用,而只对id为
QuickSearchMainCategory
的输入起作用。
我需要做什么?

Select2不能使用“已禁用”绑定,因为您必须明确地告诉Select2使用其内置功能禁用自身

您必须使用此功能来禁用/启用它:

$('#QuickSearchMainCategory').select2('disable');
$('#QuickSearchMainCategory').select2('enable');

您必须在ko viewmodel中执行此操作,因为仅设置disabled HTML属性是不够的。

禁用时,选择2该值不会发送到mvc post。如何做到这一点?禁用了CSS样式的表单字段和表单字段:HttpPost永远不会发送任何字段。只需启用该字段或在表单中使用隐藏的输入即可。我发现了如何做到这一点,“Disabled”或“enable”=false,所有这些都会使MVC忽略该值。但我使用了.select2('readonly',true),这使得该字段在屏幕上被禁用,但MVC收到了该值!!
$('#QuickSearchMainCategory').select2('disable');
$('#QuickSearchMainCategory').select2('enable');