1

5 つのステップを持つウィザードがあり、各ステップでユーザーから車の販売に関する情報を取得します。1 つ目はオペレーション タイプ (販売、レンタル)、2 つ目はカテゴリ (車、トラック、ボート)、3 つ目はアイテムの詳細 (メーカー、モデル、バージョン)、4 つ目はエクストラ、5 つ目はメンバー アドレスです。

オプションの各ステップ リストは、@Ajax.ActionLink を使用して構築され、結果を次のマスター ページの特定の DIV に送信します (操作 -> カテゴリ -> 広告 -> エクストラ -> メンバー -> 作成)。

@model Heelp.ViewModels.CreateAdViewModel

@using (Html.BeginForm(MVC.Ad.Create(), FormMethod.Post, new { id = "createAdForm" })) 
{
    @Html.AntiForgeryToken()
    <div id="operation">
         @{ Html.RenderAction(MVC.Ad.CreateAdOperation()); }
    </div>
    <div id="category"></div>
    <div id="ad"></div>
    <div id="extras"></div>
    <div id="member"></div>

   <input type="submit" value="Create" />
}

このマスター ページには、すべてのステップからすべての情報を受け取り、CreateAd アクションに送信されるすべての「入力」を作成する「マスター」ビューモデル「CreateAdViewModel」があります。

私が今持っているのは、各ステップの ViewModel です。

public class CreateAdOperationViewModel
{
    // Operation Fields
}

public class CreateAdCategoryViewModel
{
    // Category Fields
}

public class CreateAdViewModel
{
    // Common Ad Fields
}

public class CreateAdCarViewModel : CreateAdViewModel
{
    // Car View Model Fields
}

主な問題は、このソリューションが理にかなっているかどうかを知ることです。各ビューには独自の ViewModel が必要であることがわかっているため、それぞれ独自の ViewModel を持つさまざまなビューに基づいてマスター ViewModel を送信する必要があります。

お時間をいただきありがとうございます。

4

1 に答える 1

0

これらのビューが同じデータにアクセスする必要があることに基づいて、ビュー間で ViewModel を共有できます。共有データがビュー全体ではなく部分的なものである場合は、共有データを含む共有「コンテキスト」プロパティを持つ個別の ViewModel (View ごとに 1 つの ViewModel) を持つことができます。

その方法を示す記事の例を次に示します: http://blog.bitdiff.com/2012/05/sharing-common-view-model-data-in.html

幸運を!

于 2013-01-22T12:01:46.447 に答える