繁体   English   中英

一个控制器,多种视图,多种形式

[英]One controller, multplie views, multiple forms

目标是使用向导创建一页。 向导的每个步骤都是包含表单的局部视图。 我只有一个控制器(保险),每个视图都有一个动作。 这些操作将接收发布的数据,并返回下一步的视图模型或包含错误详细信息的当前步骤的视图模型。

页面(Index.cshtml)具有部分视图,呈现为@Html.Partial("~/Views/Shared/_RegistrationCode.cshtml") ,部分视图本身包含一个表单,呈现为@using (Html.BeginForm("RegistrationCodeDetails", "Insurance", FormMethod.Post)) {@using (Html.BeginForm("RegistrationCodeDetails", "Insurance", FormMethod.Post)) {<input type="submit" name="nextButton" value="Verder" class="btn btn-success" />提交。

该代码按预期工作,直到第一个动作使用return PartialView("_Product", productViewModel);下一步的视图模型(部分视图return PartialView("_Product", productViewModel); ActionResult不会发送到部分视图,而是呈现为完整视图,因此结果是部分呈现为屏幕上唯一的内容。

我摆弄了@using (Ajax.BeginForm("RegistrationCodeDetails", "Insurance", new AjaxOptions { UpdateTargetId = "articleProductOutput", HttpMethod = "Post" })) {

编辑:

我们已决定采用另一种方法:一页,一个控制器和基本上一个视图模型。 初始数据立即呈现,使用JSON和局部视图检索依赖于向导中其他步骤的数据。

除非将部分视图标记为[ChildActionOnly],否则它将不会在同一页面中加载! 您的局部视图应该看起来像

[ChildActionOnly]
public ActionResult _ParialView1()
{
//TODO: Add the required code here
}

//并且您的PartialView应该包含在主视图中,如下所示:

@{Html.Action("_PartialView1","Controller1");}

谢谢,希望对您有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM