オブジェクトの複数のカテゴリの詳細が保存されているMVC3RazorWebアプリを開発しています。(車両、住宅、楽器など)。すべてのオブジェクトは、いくつかの共通データ(タイトル、説明など)と、それが属するカテゴリに固有の詳細を共有します。カテゴリリストは拡大すると予想され、保守性の低下を考慮して、同じオブジェクトの追加ウィザードを再利用したいと考えています。ウィザードは、次の実装に基づいています。
http://afana.me/post/create-wizard-in-aspnet-mvc-3.aspx
マルチステップウィザードプロセスでは、最後のステップで、ユーザーはカテゴリ固有の詳細(車両のモデル、メーカー、VINなど)を入力できます。現在、私はこの最後のステップをAJAXを使用した部分ビューとして想定しています。したがって、実際には、特定のカテゴリを反映する複数の部分ビューがありますが、ウィザードコードの残りの部分は共有されます。
私の汎用モデルオブジェクトは次のようなものです
public class AssetView
{
[Required]
public string Title
{
get;
set;
}
[Required]
public string Description
{
get;
set;
}
// Few more generic fields here
public SpecificAsset AssetDetails { get; set; }
}
複雑なプロパティAssetDetailsは、各タイプの部分ビューで表されます。したがって、PartialView "MotorDetails"には、以下のように宣言されているMotorAsset型の強く型付けされたモデルが含まれます。
public class MotorAsset : SpecificAsset
{
[Required]
public string Transmission
{
get;
set;
}
[Required]
public string Make
{
get;
set;
}
}
実際の検証は非常に複雑ですが、理解しやすいようにこれらを省略しました。
メインウィザードページは次のように宣言されています
@model AssetView
.....
<div class="wizard-step">
....
</div>
<div class="wizard-step">
....
</div>
<div class="wizard-step">
@{Html.RenderPartial("_MotorCreate", Model.AssetDetails);
</div>
としてのモーター部分ビュー
@model MotorAsset
私の質問は、最後のステップがビューページではなく部分ビューにあるため、このシナリオでモデルの検証をどのように実行できるか(または使用できるか)です。