動的であるとエラーが発生するリスクがあるため、ViewBagを回避する方法をどのように処理しますか。また、新しいViewModelを設定して、毎回ビューに戻す必要もありません。たとえば、ViewBagに通常詰め込まれている一般的なデータを公開するために、必ずしも以下を変更する必要はありません。
[HttpGet]
void Index()
{
return View();
}
に
[HttpGet]
void Index()
{
var messages = new MessageCollection();
messages.AddError("Uh oh!");
return View(messages);
}
パイプラインのどこに、カスタムで強く型付けされたViewBagのようなプロパティを追加しますが、コントローラーとビューでエレガントに公開します。特定のViewModelが常に必要ない場合は、これを実行したいと思います...
[HttpGet]
void Index()
{
Messages.AddError("Uh oh!");
return View();
}
そして、ビュー側では、@((IMessageCollection)ViewBag.Messages).Errors idの代わりに、強く型付けされてどこでも利用できる@Messages.Errorsのようなものがあります。また、Razorビューの上部にあるコードブロックにキャストしたくありません。
WebFormsでは、これをベースページに配置し、必要に応じてページに表示または非表示にできるユーザーコントロールを設定するようなことをしていました。コントローラーがビューから切り離されているため、同様の動作を再現する方法がわかりません。
これは可能ですか、それとも最良の設計アプローチは何ですか?
ありがとう、スコット