目标是让一个页面带有向导。向导的每个步骤都是包含表单的局部视图。我只有一个控制器(保险),每个视图都有一个动作。操作接收已发布的数据并返回下一步的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和部分视图检索取决于向导中其他步骤的数据。
答案 0 :(得分:1)
除非您将部分视图标记为[ChildActionOnly],否则它不会加载到同一页面中! 部分视图应该看起来像
[ChildActionOnly]
public ActionResult _ParialView1()
{
//TODO: Add the required code here
}
//并且您的PartialView应该包含在主视图中:
@{Html.Action("_PartialView1","Controller1");}
谢谢,希望这会有所帮助!