MVC 3 Razor Web Appを開発しています。複数のカテゴリのオブジェクトの詳細が格納されています。 (車両、住宅、計器など)。すべてのオブジェクトは共通のデータ(タイトル、説明など)と、それが属しているカテゴリに固有のいくつかの詳細を共有します。カテゴリリストは拡大すると予想され、メンテナンス性が低下するという観点から、同じオブジェクトの追加ウィザードを再利用したいと考えています。ウィザードは、次の実装に基づいています。複数ステップのウィザードプロセスで複数の部分ビューに分割されたASP.NET MVCモデル
http://afana.me/post/create-wizard-in-aspnet-mvc-3.aspx
、最後のステップは、ユーザが(車のモデル、作る、VINなど)カテゴリ具体的な詳細を入力することができます。現在、私はこの最後のステップをAJAXの部分ビューとして構想しました。したがって、実際には、特定のカテゴリを反映した部分的なビューが数多くありますが、残りのウィザードコードは共有されます。
私の一般的なモデルオブジェクトは、複雑なプロパティAssetDetailsは、部分図の各タイプで表され、この
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; }
}
のようなものです。 PartialView "MotorDetails"には、以下のように宣言されているMotorAsset型の強く型付けされたモデルが含まれます。
public class MotorAsset : SpecificAsset
{
[Required]
public string Transmission
{
get;
set;
}
[Required]
public string Make
{
get;
set;
}
}
実際の検証は、はるかに複雑ですが、わかりやすいようにこれらを省略しました。
私の質問は、私は、このシナリオでモデルの検証を行うことができる方法である(またはそれを使用することが可能である)
@model MotorAsset
としてモーター部分図
@model AssetView
.....
<div class="wizard-step">
....
</div>
<div class="wizard-step">
....
</div>
<div class="wizard-step">
@{Html.RenderPartial("_MotorCreate", Model.AssetDetails);
</div>
としてメインウィザードページが宣言されています最後のステップはビューページには表示されず、部分的なビューになります。
私はウィザードのUIを再利用することができません。カテゴリの種類ごとに作成する必要があります。私の意見では、より良い、より清潔でメンテナンス可能な – Azwaan
です。しかし、それをそのままにしたい場合は、RenderPartial()の代わりにEditorFor()を使用して、検証とバインディングを解決できます。更新された回答を参照してください。 – mare
私たちは20種類以上のカテゴリーを持っており、今のところそれはもっと成長すると期待されています。私はeditorForが "AssetDetails"のタイプが "SpecificAsset"であるために使用できるとは思わない。使用されているカテゴリに応じてタイプが動的に変更されます。 – Azwaan