コントローラがモデルに基づいてビューをレンダリングすると、インデクサー(つまり、ViewData ["Property"])を使用してViewDataコレクションからプロパティを取得できます。しかし、私は以下を使って呼び出そうとした共有ユーザーコントロールを持っています:
return View("Message", new { DisplayMessage = "This is a test" });
私のメッセージコントロールで私はこれを持っていた:
<%= ViewData["DisplayMessage"] %>
私はこれがDisplayMessageを正しくレンダリングすると思いますが、nullが返されています。私は最終的に私のユーザーコントロールを強く入力するために "MessageData"クラスを作成しました:
public class MessageControl : ViewUserControl<MessageData>
そして今、この呼び出しは動作します:
return View("Message", new MessageData() { DisplayMessage = "This is a test" });
次のように表示できます。
<%= ViewData.Model.DisplayMessage %>
DisplayMessageプロパティをViewData(つまり、ViewData ["DisplayMessage"])コレクションに追加しないのはなぜですか?これは設計によるものですか? ViewDataに "DisplayMessage"のキーが含まれているのは意味がありませんか?