使用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。问题是隐藏列如何与我的方法一起使用。
答案 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();
}