問題

コントローラがモデルに基づいてビューをレンダリングすると、インデクサー(つまり、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"のキーが含まれているのは意味がありませんか?

  ベストアンサー

メソッド

 ViewData.Eval("DisplayMessage") 
 

君のために働くべきだ。

  同じタグがついた質問を見る

asp.netasp.net-mvcviewdataviewusercontrol