2016-05-27 14 views
-1

私はこのエラーにしばらくお待ちしており、ienumerableオブジェクトがブロックされています。 。'BranchQuickChange'キーを持つ 'IEnumerable <SelectListItem>'タイプのViewDataアイテムはありません

HTML:

{ 
     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); 
    } 

モデル:

コントローラ

@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> 

[TableNameAttribute("WAGTripHdr")] 
public class WAGTripHdr : SQLSelectUpdateInsertHelper 
{ 

    public string DebName { get; set; } 

} 

はいくつかのアドバイスを待っています。

答えて

0

このエラーは、通常、DropDownListForに渡されたコレクションがnullの場合に発生します。フォールバックとして、ヘルパーはプロパティの後に指定されたメンバー(ViewBag.BranchQuickChange)の下にあるViewBagのオプションを見つけようとします。そこで使えるものが見つからないときは、それはあきらめて、あなたが参照する例外が得られます。

つまり、で、実際にはViewBag.CompanyListに設定されているようです。さらに、SelectListインスタンスに設定されていますので、実行中のビューでSelectListにキャストすると値を具体化する必要があります。私が考えることができるのは、ここに投稿したアクションとは異なるアクションがロードされている可能性があるということだけです。特に、このアクションのGETとPOSTのバージョンがある場合は、の両方がViewBag.CompanyListに設定されていることを確認してください。あなたはその行を1つに追加し、他の行には追加しないでください。

関連する問題