子项模型在帖子上为空

时间:2015-07-16 17:01:48

标签: c# asp.net-mvc-5

关于我的问题,我在这里看到过类似的问题,但我无法找到适合我目的的合适解决方案。所以我开始使用MVC并且必须创建一个简单的向导。我创建了父视图模型,

public class WizardSteps
{
    public int CurrentStepIndex { get; set; }

    public WizardStep1 Step1 { get; set; }

    public WizardStep2 Step2 { get; set; }

    public WizardStep3 Step3 { get; set; }

    public WizardSteps()
    {
        CurrentStepIndex = 1;
        Step1 = new WizardStep1();
        Step2 = new WizardStep2();
        Step3 = new WizardStep3();
    }
}

现在我为每个向导步骤创建了三个部分视图。对于我使用父模型的每个视图,

@model eFormation_MVC.Models.WizardSteps

对于每个部分视图中的每个字段,我在表单中使用了这样的控件,

@Html.LabelFor(m => m.Step1.FirstName, new { @class = "col-sm-3 control-label" })


@Html.LabelFor(m => m.Step2.Address, new { @class = "col-sm-3 control-label" })

这是一个简短的代码,用于说明我到目前为止所做的工作。我对每个部分视图都有不同的控制器方法。我将Parent Model WizardSteps传递给控制器​​并将其传递回下一个Partial View。因此,使用具有子模型的所有部分视图单一模型。现在,当我从Second Partial View发布模型时,WizardSteps.Step1中的所有值都变为null。我也知道这是实际行为,但我的问题是如何坚持价值观。这样做的正确方法是什么,以便每个Step的值不会从Parent模型中丢失。

修改 每个局部视图都有自己的形式,我将父模型WizardSteps发送到控制器上,每个局部视图的表单提交。问题是,当我提交步骤2的部分视图时,WizardSteps中步骤1的值变为空。我知道发生这种情况是因为步骤2部分视图中的步骤1没有字段,控制器认为值为空并且不会持续存在。

在一些相关问题上,建议对模型进行序列化并将其存储在View上,然后将其发送回控制器并对其进行反序列化。有些人使用Sessions或TempData来存储模型,但我想要一些用模型完成的东西。在MVCWizard.Wizard - Using Complex Models使用MVCWizard有一个问题,但这个问题的答案是如此模糊,我无法理解。我希望使用Merge功能类似于MVCWizard,但找不到任何这样做的例子。需要帮助。

0 个答案:

没有答案