如何禁用下拉列表控件值到控制器

本文关键字:控制器 控件 何禁用 下拉列表 | 更新日期: 2023-09-27 18:36:49

在 asp.net mvc5上工作。当我禁用下拉列表控件时,我的项目下拉列表工作完美,然后无法在控制器中获取值

我的剃刀语法如下:

 <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>

我的控制器语法来填充上面的下拉列表

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

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

如何禁用下拉列表控件值到控制器

您可以使用

Jquery 检索 DropList 的当前选定项的值,该值在您的情况下被禁用,使用

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

您可以将包含禁用下拉列表值的下拉列表值变量发送到控制器。

这是正常行为。禁用字段无法发布,那么添加一个Html.HiddenFor()来发布禁用值是一种常见的做法。

正如您所说,您的模型中没有"ProductId"属性。但是,如果创建Html.Hidden("ProductId", "YourValue")并在"控制器创建/编辑"操作中添加名为"productId"的参数,则应从中模拟该值。

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

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