asp.net MVCフォーム提出エラー:ViewData Type MISMATCH ASP.NET MVCフォームを送信すると、「categoryid」がタイプ「system.int32」であるが、「ienumerable」というタイプでなければならない「categoryid」のviewdataアイテムにはエラーが発生する可能性があります。これは通常、コントローラーのアクションがドロップダウンリストの
オブジェクトのコレクションを期待しているが、代わりに単一の整数を受信するときに発生します。SelectListItem
根本原因:
矛盾は、ビューモデルとコントローラーアクションの期待との間の不一致から生じます:
ビューモデルの
プロパティはCategoryID
が必要です。
int
コントローラーのGETメソッドはドロップダウンリストを正しく入力しますが、POSTメソッドはそれを再定義できません。
IEnumerable<SelectListItem>
につながり、エラーが発生します。 フレームワークは、解決策:CategoryList
int
ViewData
ソリューションには、コントローラーのポストアクション内でIEnumerable
プロパティを再埋めることが含まれます。これにより、フォームの提出後でもドロップダウンリストデータが利用可能になります。
メカニズムを理解する:
CategoryList
ヘルパーメソッドは、プロパティ名を使用して
<code class="language-csharp">public ActionResult Create(ProjectVM model) { if (!ModelState.IsValid) { // Repopulate the CategoryList model.CategoryList = new SelectList(db.Categories, "ID", "Name"); return View(model); } // ... save the model and redirect ... }</code>
を見つけるが予想される場合、エラーがトリガーされます。
このエラーは、ビューモデル、ビュー、およびシームレスなフォーム送信のコントローラーアクション間の一貫したデータタイピングの重要性を強調しています。 データ型管理に注意することで、これらの一般的なMVCの落とし穴が妨げられます。以上がなぜ私のASP.NET MVCフォームの提出が「ViewDataアイテムタイプの不一致:「IENUMERABLE」が「system.int32」を受け取った」エラーを投げるのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。