【问题标题】:Multiple Views for one ViewModel on a CreateCar WizardCreateCar 向导上一个 ViewModel 的多个视图
【发布时间】:2013-01-22 11:49:30
【问题描述】:

我有一个包含 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。

感谢您的宝贵时间。

【问题讨论】:

    标签: c# asp.net-mvc viewmodel partial-views


    【解决方案1】:

    您可以在 View 之间共享 ViewModel,前提是这些 View 需要访问相同的数据。如果共享数据只是部分而不是整个视图,您可以拥有单独的 ViewModel(每个 View 一个 ViewModel),其中包含共享数据的共享“上下文”属性。

    这是一个示例文章,展示了如何做到这一点:http://blog.bitdiff.com/2012/05/sharing-common-view-model-data-in.html

    祝你好运!

    【讨论】:

    • 谢谢,但我很难将文章与我的问题联系起来:(
    猜你喜欢
    • 2020-01-14
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 2013-10-17
    • 1970-01-01
    相关资源
    最近更新 更多