[英]How to specify “value” for asp.net mvc Html helper droplist
[英]ASP.Net MVC DropList value binding to wrong property
我有一个具有两个属性的模型,一个字符串setID和一个字符串woID列表。 集合是workOrders的集合。 当我在控制台中检查仅分配setID时,我正在努力获取下拉列表的选定值以绑定到woId
$("#SetDDL :selected").val();
"TC2010-TEST-2017-OS"
$("#SetDDL :selected").text();
"TC2010-TEST-2017-OS"
我的模特看起来像
public class SetWoDropDownModel
{
public string setId { get; set; }
public List<string> woId { get; set; }
}
这是视图的下拉部分
@model IEnumerable<Tiamat.WebUI.Areas.ParksRMSetAutomation.Models.SetWoDropDownModel>
@{
ViewBag.Title = "Parks Routine Maintenance Sets Automation";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@Html.DropDownList("SetId",
new SelectList(Model.Select(i => i.setId).Distinct().ToList(), Model.Select(i => i.woId).Distinct().ToList()),"Select Set ID",
new {@class = "input-large form-control", @id = "SetDDL", @onchange = "setDropDownChange(this.value)"}
)
setDropDownChange所做的所有事情都是切换按钮的可见性
function setDropDownChange(val) {
if (val !== "") {
$('#btnSubmit').attr('style', 'visibility: visible');
} else {
$('#btnSubmit').attr('style', 'visibility: hidden');
}
有人可以指出我正确的方向吗?
假设您的模型每个setId都有一个woId项目列表。
var Model = new[]
{
new { setId = "TC2010-TEST-2017-OS", woId = new[] { "W01", "W05", "W07"}},
new { setId = "TC2011-TEST-2017-OS", woId = new[] { "W02", "W10" }}
};
然后,您可以将这些项目分组。
var itemList = from item in Model
group item.woId by item.setId into g
select new { setId = g.Key, woId = string.Join(",", g.SelectMany(v=>v).ToArray())};
并将列表传递给助手。
@Html.DropDownList("SetId",
new SelectList(itemList, "woId", "setId", null), "Select Set ID",
new {@class = "input-large form-control", id = "SetDDL",
onchange = "setDropDownChange(this.value)"
})
结果HTML看起来像这样。
<select class="input-large form-control" id="SetDDL" name="SetId"
onchange="setDropDownChange(this.value)">
<option value="">Select Set ID</option>
<option value="W01,W05,W07">TC2010-TEST-2017-OS</option>
<option value="W02,W10">TC2011-TEST-2017-OS</option>
</select>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.