c# - 在 ASP.NET MVC 3 中多次传递模型

标签 c# asp.net-mvc asp.net-mvc-3

我想做一些类似于包含不同部分的调查问卷的东西。 因此,我创建了一个 Index.cshtml,其中包含相应的部分 View (取决于我的步长整数的数量)。类似的东西

@using (Html.BeginForm())
{
        @Html.Partial("Step" + Model.Step, Model)
        <p>
            @if (Model.Step > 1)
            {
                <button name="button" value="Zurück" />
            }
            <input type="submit" value="Weiter" />
        </p>
}

正如您可能已经注意到的,它会查找类似“Step1.cshtml”等的内容,例如放置相应输入掩码的位置

@model CVGen.Models.InputModel
<div class="editor-field">
    @Html.TextBoxFor(model => model.Anrede)
    @Html.ValidationMessageFor(model => model.Anrede)
</div>

我的模型包含整个调查问卷的属性,因此我当然希望每次都将整个模型传递到下一步/ View (如果我返回,模型也应该传递回来,以便信息是仍然在那里,用户可以编辑它)。 但这对我来说不起作用。我的 Controller 看起来像这样:

public ActionResult Index()
{
    InputModel model = new InputModel();

    return View(model);
}

[HttpPost]
public ActionResult Index(InputModel model)
{
    model.Step++;
    return View(model);
}

另外,我的 model.Step 属性始终为 0(或 1,在 HttpPost 中添加 1 后),这当然是因为我的模型不会再次传递。

有什么建议吗?

最佳答案

可能值得查看之前有关此主题的博客示例(以及此处的一些示例):

简而言之,无论是否允许 jQuery/javascript,我都会执行以下操作:

  • 创建一个包含向导所需的所有字段的模型。
  • 创建一个 Controller (用于向导步骤)
  • 为每个向导页面创建一个操作(同样,所有操作都应使用相同的向导模型)
  • 在流程结束时创建一个SAVE操作,将所有内容保存到数据库中。

此外,在上面的示例中,您没有在表单标记内的 View 中包含“步骤”。回发时需要这样做。您应该添加类似以下内容:

@Html.HiddenFor(model => model.Step)

您的里程可能会有所不同 - 祝您好运

关于c# - 在 ASP.NET MVC 3 中多次传递模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9600042/

相关文章:

asp.net-mvc-3 - 发现空引用或无效值 [GDI+ 状态 : InvalidParameter]

jquery - MVC 模型绑定(bind)期间日月反转

c# - 我怎样才能编写一个 Android 应用程序来获得某种独特的值(value)?

asp.net-mvc - 如何在Url.Action中传递Area?

asp.net-mvc - ASP.NET MVC 4 操作过滤器问题

c# - Azure 虚拟机没有端点

asp.net-mvc-3 - Autofac 相当于 Ninject 的 WhenInjectedInto()

c# - 正确使用迭代 block

c# - 通过 Rfc2898DeriveBytes 的密码哈希 - 传递给 getBytes 的内容

c# - 优化 foreach 循环