0

私はそこにされていることを知っているanumberofquestionsaskedsimilarへこれは、しかし、彼らはすべて、POSTをしようとするとうまくロードされ、問題を抱えているページを扱っているようです。私はコードの最初のデータベースを持つMVCプロジェクトで足場のコードを使用しています。失敗したドロップダウンは、外部キーの関係からいっぱいになっているはずです。全く同じコードを使用していますが、別の名前を持つ2つのドロップダウンがあり、この1つのドロップダウンだけが悪いことをコメントで示しています。これは編集上でなければならないが、他の質問のようにデータを送信するためにページが読み込まれない。作成ページと編集ページの両方が読み込まれません。足場モデル/ビュー:「可能System.String」キー「列」型であるがありますが、型でなければなりませんViewDataをアイテム「IEnumerableを<SelectListItem>」

public ActionResult Edit(long? id) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 
    Person person = db.People.Find(id); 
    if (person == null) 
    { 
     return HttpNotFound(); 
    } 
    ViewBag.Title = new SelectList(db.Job_Title, "Id", "Title", person.Title); 
    ViewBag.Location = new SelectList(db.Locations, "Id", "Name", person.Location); 
    ViewBag.Manager = new SelectList(db.Managers, "Id", "Name", person.Manager); 
    return View(person); 
} 

と、これは、対応するビューの部分である:私はちょうどタイトルのドロップダウンが殺す理由を知ってみたい

<div class="form-group"> 
    @Html.LabelFor(model => model.Title, "Title", htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
     @*FIXME: Commenting the line below will allow the page to load fine*@ 
     @Html.DropDownList("Title", null, htmlAttributes: new { @class = "form-control" }) 
     @Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" }) 
    </div> 
</div> 

<div class="form-group"> 
    @Html.LabelFor(model => model.Location, "Location", htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
     @Html.DropDownList("Location", null, htmlAttributes: new { @class = "form-control" }) 
     @Html.ValidationMessageFor(model => model.Location, "", new { @class = "text-danger" }) 
    </div> 
</div> 

<div class="form-group"> 
    @Html.LabelFor(model => model.Manager, "Manager", htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
     @Html.DropDownList("Manager", null, htmlAttributes: new { @class = "form-control" }) 
     @Html.ValidationMessageFor(model => model.Manager, "", new { @class = "text-danger" }) 
    </div> 
</div> 

これはコントローラであり、言ったことすべてで

他の2つのページは完全に良好です。私はまた、足場のコードがエラーで生成された理由を知りたいです!

答えて

2

このエラーは、ViewBag.Titleの値がnullであるか、またはIEnumerable<SelectListItem>ではないことを意味します。

あなたのビューでは、GETメソッドで設定された値を上書き

@{ 
    ViewBag.Title = "....."; 
@ 

が含まれているため、これが起こっされます。

+0

良いキャッチ!ビューバッグの項目名を 'ViewBag.TitleList'に変更し、それを使用するようにUIコードを更新することができます。 '@Html.DropDownList(" Title "、SelectBag.TitleList as SelectList)'またはより正確なプロパティー名を持つビューモデルを使用すると便利です – Shyju

+0

@Shyju、 'Title'は既に設定されています(最初のオプションは常に選択され、正しいものは選択されません)。いつものように、ビューモデルを使用し、プロパティ名を 'Salutation'と変更するのが最も良い –

+0

@StephenMuecke Alright。ファイルの先頭にその行が表示されていますが、提案されている解決策については少し混乱しています。これはスキャフォールドされていたので、私はビューモデルを書いていないので、その変更を行うためにどこを調べる必要がありますか? – dlkulp

関連する問題