如何禁用DropDownList控件值到控制器

时间:2016-02-29 04:37:30

标签: c# asp.net-mvc razor

使用asp.net mvc5.My项目当我禁用 DropDownList 控件然后无法在控制器中获取值时,DropDownList工作完全出现问题。

我的剃刀语法如下:

 <div class="form-group">

@Html.LabelFor(m => m.ProductName, new {@class = "col-md-3 control-label"})
                    <div class="col-md-3">
                        @Html.DropDownList("ProductID", null, "Select product", new {@placeholder = "Select product", @class = "form-control", @disabled = "disabled" })
                    </div>
                </div>

我的控制器语法来填充上面的DropDownList

 private void LoadProductsInViewData(object selectedValue = null)
        {
            var datas = productRepository.GetAll().OrderBy(p => p.Name);
            ViewBag.ProductID = new SelectList(datas, "ProductID", "Name", selectedValue);
        }

为什么在控制器创建/编辑事件中无法获取DropDownList值? 注意:我知道它已禁用控件默认行为,我尝试使用隐藏列,如this。问题是隐藏列如何与我的方法一起使用。

3 个答案:

答案 0 :(得分:0)

您可以使用Jquery来检索在您的情况下禁用的DropList的当前所选项目的值,使用

       var dropDownValue=("#Id_of_u_Dropdownlist").val()

您可以将包含Disable Dropdown列表值的DropDownValue变量发送给Controller。

答案 1 :(得分:0)

这是正常行为。无法发布已停用的字段,然后添加Html.HiddenFor()以发布已禁用的值是一种常见的做法。

正如您所说,模型中没有"ProductId"属性。但是,如果您创建Html.Hidden("ProductId", "YourValue")并添加名为&#39; productId&#39;在“控制器创建/编辑”操作中,应该对该值进行分区。

答案 2 :(得分:0)

创建一个Httpost Action,然后像这样使用FormCollection对象

    [HttpPost]
    public ActionResult GetDropDownValue(FormCollection Form)
    {
        string dropdownValue=form["ID_of_dropdownlist"].toString();
    }