複雑なビューモデルを作成して更新することは、私がウェブプロジェクトに取り組んでいるときに大部分の時間を費やしていることです。ASP.NET MVCで複雑なビューモデルを作成する方法は?
-
:
- は 特定のビューモデルを保持する(相続等オーバー組成物)
- に由来します私は、
GET
アクションのために、私は今、私が実際に特定のアクションのために必要なビューモデルからプロパティとしてだけでなくPageViewModel
からすべてのプロパティを初期化する必要がどのような場合にはオプション2の方がより傾いている明白な理由のために
は例えば、私は今、2つのオプションを持って_Layout.cshtml
に渡す背景画像URLとページタイトルを取るPageViewModel
ので、他のすべてのビューモデルについては
@model WebApplication.ViewModels.PageViewModel
<body [email protected]>
...
</body
を得ました
PageViewModel
のプロパティを作成し
PageViewModel
、例えば
は、私には、災害のためのレシピです
public IActionResult Contact(int contactId)
{
...
var viewmodel = new PageViewModel
{
BackgroundImageUrl = ...,
ContactViewModel = new
{
...
}
}
}
のように作成されます。
物事は私が再構築する必要があり、理想的に、私は問題の行為に関連するフィールドだけを掲載しますので、それは何がPOST
アクションでうまくいかない場合は
public IActionResult Contact(ContactViewModel viewmodel)
{
if (ModelState.IsValid)
{
... (this is the easy case)
return RedirectToAction(...)
}
... (now we have a problem)
}
で、POST
でさえ悪化します上の例ではそれほど悪くないが、実世界のアプリケーションでは、これは非常に面倒です(ちょうど店からのデータでドロップダウンリストを設定すると思います)。コントローラの動作はリーンであると考えられていますか?ビューモデルに自分自身のデータを取得させる責任があるとは思わないので、おそらくビューモデルファクトリを用意する必要があります。それは順番に、厄介なものになる、それぞれのビューモデルのための1つの工場の過多を作り出すでしょう。
もっと良いアプローチがあるのでしょうか?