2013-01-22 15 views
1

我有一個嚮導,其中包含5個步驟,每個步驟中我都會從用戶那裏獲取有關他的汽車銷售的信息。首先是操作類型(Sale,Rent),其次是類別(Car,Truck,Boat),第三是項目細節(Make,Model,Version),四是額外參數,五是會員地址。CreateCar嚮導上的一個ViewModel的多個視圖

的選項每一步名單是建立使用@ 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" /> 
} 

此主頁面具有「主」ViewModel「CreateAdViewModel」,它將接收來自所有步驟的所有信息,創建要發送到CreateAd Action的所有「輸入」。

什麼我現在已經是每一個步驟一個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 
} 

的主要問題是要知道,如果這個解決方案是有道理的,因爲一直至今我知道,每個View應該有他自己的視圖模型,但我需要根據不同的視圖提交一個主ViewModel,每個ViewModel都有自己的ViewModel。

謝謝你的時間。

回答

0

您可以在視圖之間共享ViewModel,因爲這些視圖需要訪問相同的數據。如果共享數據僅是部分數據,而不是整個視圖,則可以使用包含共享數據的共享「上下文」屬性爲單獨的ViewModel(每個View一個ViewModel)。

下面是一個例子文章,說明如何做到這一點:http://blog.bitdiff.com/2012/05/sharing-common-view-model-data-in.html

祝你好運!

+0

謝謝,但我有一些貧困映射文章與我的問題:( – Patrick

相關問題