0

私はmvc3かみそりを使用していますが、問題はかみそりヘルパーを使用してデータベースにドロップダウンリスト値を記録することです。

 @Html.DropDownListFor(m => m.Question,   (IEnumerable<SelectListItem>)ViewBag.QuestionList)

ここで、私の見解はモデルバインディングを使用しています。データベース内の質問列はstingデータ型(varchar)であり、アプリケーションの実行中は、フォームの送信後に次のエラーが表示されます

The ViewData item that has the key 'Question' is of type 'System.String' but must be of type 'IEnumerable<SelectListItem>'.

ここでエラーを回避するために、ここで何を変更する必要がありますか。モデルバインディングを使用する必要があります。

4

1 に答える 1

0

ここでエラーを回避するために、ここで何を変更する必要がありますか。モデルバインディングを使用する必要があります。

このビューをレンダリングしたコントローラーアクション内で、ViewBag.QuestionListプロパティに。を入力したことを確認する必要がありますIEnumerable<SelectListItem>。通常、このDropDownを含む同じビューを再表示する場合、POSTアクションでこれを行うのを忘れます。

IEnumerable<SelectListItem> items = ... 
ViewBag.QuestionList = items;
return View(someModel);

また、モデルのQuestionプロパティが複合型ではなく、スカラー型(文字列、整数、...)であることを確認してください。複合型の場合は、対応するスカラープロパティを選択して、選択した値を以下にバインドする必要があります。

@Html.DropDownListFor(
    m => m.Question.QuestionId, 
    (IEnumerable<SelectListItem>)ViewBag.QuestionList
)
于 2012-08-23T09:06:57.853 に答える