没有类型&#39; IEnumerable <selectlistitem>&#39;的ViewData项目。有关键&#39; BranchQuickChange&#39;

时间:2016-05-27 13:41:55

标签: asp.net-mvc-4

我已经暂时出现此错误并且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; }

}

等待一些建议。

1 个答案:

答案 0 :(得分:0)

当传递给DropDownListFor的集合为空时,通常会发生该错误。作为后备,帮助程序尝试在属性命名的成员(即ViewBag)下的ViewBag.BranchQuickChange中查找选项。当它找不到任何可用的东西时,它也会放弃,你得到你引用的例外。

也就是说,您的 实际上是在您的操作中设置ViewBag.CompanyList。此外,它被设置为SelectList实例,因此在您正在进行的操作中将其强制转换回SelectList应实现该值。我唯一能想到的是,可能会加载与您在此处发布的动作不同的动作。特别是,如果您有此操作的GET和POST版本,请确保两者设置ViewBag.CompanyList。您可能只将该行添加到一个而不是另一个。