我有一个包含 5 个步骤的向导,在每个步骤中,我都会从用户那里获取有关他的汽车销售的信息。第一个是操作类型(Sale、Rent),第二个是 Category(Car、Truck、Boat),第三个是项目的详细信息(Make、Model、Version),四个是 extras,五个是会员地址。
选项的每个步骤列表都是使用 @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" />
}
此母版页具有“主”视图模型“CreateAdViewModel”,它将接收来自所有步骤的所有信息,创建要发送到 CreateAd 操作的所有“输入”。
我现在拥有的是每个步骤的 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,但我需要提交一个基于不同 View 的主 ViewModel,每个 ViewModel 都有自己的 ViewModel。
感谢您的时间。