【发布时间】:2014-10-15 23:48:01
【问题描述】:
我在 HomeController 中有这段代码,应该返回最后 6 行。
private List<SelectListItem> GetOriginalIDs(string thisPWS)
{
List<SelectListItem> list = new List<SelectListItem>();
var cat = (from c in _db.DWS_BactiBucket.OrderByDescending(x => x.SampDate)
where c.PWS == thisPWS && c.SampType == "R" && c.IsTOTPresent == "1" select c).Take(6).ToArray();
for (int i = 0; i < cat.Length; i++)
{
list.Add(new SelectListItem { Text = cat[i].LabSampID + " (" + cat[i].SampDate + ")", Value = cat[i].LabSampID.ToString() });
}
return list
}
我想运行此代码以根据第一次下拉菜单中选择的内容填充第二次下拉菜单(我敢打赌您以前从未听说过这个)。
这是添加视图的第一个下拉菜单:
<div class="editor-field">
@{
var listItems = new List<SelectListItem>();
listItems.Add(new SelectListItem{Text="", Value=""});
listItems.Add(new SelectListItem{Text="R", Value="R"});
listItems.Add(new SelectListItem{Text="P", Value="P"});
listItems.Add(new SelectListItem{Text="C", Value="C"});
listItems.Add(new SelectListItem{Text="T", Value="T"});
listItems.Add(new SelectListItem{Text="A", Value="A"});
listItems.Add(new SelectListItem{Text="S", Value="S"});
}
@Html.DropDownListFor(m=>m.SampType, listItems)
</div>
这一切都显示得很好。 这是第二个下拉菜单:
<div class="editor-field">
@Html.DropDownListFor(model => model.OrigSampID(IEnumerable<SelectListItem>)ViewBag.Originals)
})
</div>
目标是使用 JSON 和/或 jQuery 填充第二个,但我无法理解调用控制器和填充第二个下拉列表的代码语法。所有的例子都没有帮助我。
【问题讨论】:
-
填充第二个的逻辑是什么?它是否基于第一个的选定值。谷歌MVC cascading select。有很多例子说明如何做到这一点
-
好的,我去了你的谷歌搜索,前 8 个链接都处理相同类型的概念证明州/城市级联下拉。看起来第九个可能会让我更接近我想要的。但我在等着看 bigfetz 对我当前代码的看法。
-
不确定我是否理解您的问题。第一个下拉菜单的值为“R”或“P”或“C”等。这是您要回发到
GetOriginalIDs的内容吗?因此,如果您选择“R”,那么查询将是from c in _db.DWS_BactiBucket.OrderByDescending(x => x.SampDate) where c.PWS == "R" && c.SampType == "R" && c.IsTOTPresent == "1" select c ....?至于返回 JSON,您应该创建一个匿名对象列表,其中包含您想要的第二个下拉列表的值和文本(不是SelectList -
如果值为“P”,则填充第二个下拉列表。 (P 的意思是“重复样本”,它必须引用一个 R(例程阳性)。所以我推迟确定第一个被选中的值。我假设“P”,以便我可以先让困难的部分工作。好吧,我正在尝试“JsonResult”并将行放在列表中并将其作为结果返回。但现在我收到此错误。异常详细信息:System.ArgumentNullException:值不能为空。参数名称:项目这是由我要填充的 SelectItemList。
-
我看到您发布了另一个相关问题。我会在那里回复。
标签: jquery asp.net-mvc json asp.net-mvc-4 razor