一个控制器,多个视图,多个表单

时间:2014-07-21 11:51:45

标签: c# asp.net-mvc mvvm

目标是让一个页面带有向导。向导的每个步骤都是包含表单的局部视图。我只有一个控制器(保险),每个视图都有一个动作。操作接收已发布的数据并返回下一步的viewmodel,或者包含错误详细信息的当前步骤的viewmodel。

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

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

我摆弄@using (Ajax.BeginForm("RegistrationCodeDetails", "Insurance", new AjaxOptions { UpdateTargetId = "articleProductOutput", HttpMethod = "Post" })) {,但数据未在第二个向导步骤部分呈现。

修改

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

1 个答案:

答案 0 :(得分:1)

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

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

//并且您的PartialView应该包含在主视图中:

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

谢谢,希望这会有所帮助!