我已经暂时出现此错误并且ienumerable
对象阻止,有人请帮我解释说明错误。
HTML:
@model IEnumerable<DatabaseDAL.Models.WAGTripHdr>
<script type="text/javascript" src="~/Scripts/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
$("select#BranchQuickChange").change(function () {
var branchName = $("select#BranchQuickChange option:selected").text();
alert(branchName);
window.location.href = '@Url.Action("QuickBranchChange", "TripSheets")?branchName=' + branchName;
});
</script>
<div class="row-fluid">
<div class="span4" style="margin-top: 15px">
@if (User.IsInRole("Administrator") || User.IsInRole("SuperUser"))
{
<strong>Quick Switch</strong> @Html.DropDownList("BranchQuickChange",ViewBag.CompanyList as SelectList)
}
</div>
控制器:
{
List<WAGBranch> listWagBranch = WAGBranchRepository.GetAllBranches(CompanyEnum.WAG).OrderBy(i => i.BRName).ToList();
List<string> listCompany = new List<string>();
foreach (WAGBranch branch in listWagBranch)
{
listCompany.Add(branch.BRName); // + " - " + branch.Branch);
}
//listCompany.Insert(0, "WAG HEAD OFFICE - WAG");
if ((string)selected == "") selected = null;
ViewBag.CompanyList = new SelectList(listCompany, selected);
}
型号:
[TableNameAttribute("WAGTripHdr")]
public class WAGTripHdr : SQLSelectUpdateInsertHelper
{
public string DebName { get; set; }
}
等待一些建议。
答案 0 :(得分:0)
当传递给DropDownListFor
的集合为空时,通常会发生该错误。作为后备,帮助程序尝试在属性命名的成员(即ViewBag
)下的ViewBag.BranchQuickChange
中查找选项。当它找不到任何可用的东西时,它也会放弃,你得到你引用的例外。
也就是说,您的 实际上是在您的操作中设置ViewBag.CompanyList
。此外,它被设置为SelectList
实例,因此在您正在进行的操作中将其强制转换回SelectList
应实现该值。我唯一能想到的是,可能会加载与您在此处发布的动作不同的动作。特别是,如果您有此操作的GET和POST版本,请确保两者设置ViewBag.CompanyList
。您可能只将该行添加到一个而不是另一个。