C# 一个控制器、多视图、多表单

C# 一个控制器、多视图、多表单,c#,asp.net-mvc,mvvm,C#,Asp.net Mvc,Mvvm,目标是有一个带有向导的页面。向导的每个步骤都是一个包含表单的局部视图。我只有一个控制器(保险),每个视图都有一个操作。这些操作接收发布的数据并返回下一步的viewmodel,或返回包含错误详细信息的当前步骤的viewmodel 页面(Index.cshtml)有部分视图,呈现为 @Html.Partial(“~/Views/Shared/\u RegistrationCode.cshtml”) 局部视图本身包含一个表单,呈现为 @使用(Html.BeginForm(“RegistrationCo

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

页面(Index.cshtml)有部分视图,呈现为
@Html.Partial(“~/Views/Shared/\u RegistrationCode.cshtml”)
局部视图本身包含一个表单,呈现为
@使用(Html.BeginForm(“RegistrationCodeDetails”,“Insurance”,FormMethod.Post)){
在表格内提交

代码按照预期工作,直到第一个操作使用返回下一步(部分视图产品)的viewmodel为止
返回PartialView(“\u Product”,productViewModel);
。ActionResult不会发送到部分视图,而是作为完整视图呈现,因此结果是部分视图作为屏幕上的唯一内容呈现

我已经使用(Ajax.BeginForm(“RegistrationCodeDetails”、“Insurance”、新的AjaxOptions{UpdateTargetId=“articleProductOutput”,HttpMethod=“Post”})){处理了
,但是在向导的第二步中没有呈现数据

编辑:


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

除非您将部分视图标记为[ChildActionOnly],否则不会加载到同一页面中! 你的局部视图应该是这样的

[ChildActionOnly]
public ActionResult _ParialView1()
{
//TODO: Add the required code here
}
//您的PartialView应包含在主视图中,如下所示:

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

感谢并希望这能有所帮助!

我无法将第一部分发布的操作标记为[ChildActionOnly],因为它抛出了一个“操作”\u RegistrationCode“只能通过子请求访问。”错误。我也无法删除它,因为这样部分视图将再次作为单独的视图呈现。让一个操作从部分a接收数据并返回部分B的输出可能是错误的吗?您是否将部分视图标记为PartialViewResult,而不是acitonresult?请参见问题?我有两个操作。第一个操作已标记[ChildActionOnly]、returntype PartialViewResult、returning PartialView(…)。第二个(第一个部分发布到的)标记为[HttpPost]、returntype PartialViewResult和returning PartialView(…)。但第二个操作不会返回部分视图,或者至少它是唯一呈现的输出。我认为您应该添加[ChildActionOnly]此外,除了[HttpPost]它们一起工作之外,视图还可以有多个属性:[HttpPost][ChildActionOnly]public PartialViewResult view1(),感谢您的努力,但我之前已经尝试过了,一旦我发布表单,它会返回“操作”\u RegistrationCodeResult“仅可由子请求访问”。