【问题标题】:One controller, multplie views, multiple forms一个控制器,多个视图,多个表单
【发布时间】:2014-07-21 11:51:45
【问题描述】:

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

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

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

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

编辑:

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

【问题讨论】:

    标签: c# asp.net-mvc mvvm


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 我无法将操作标记为 [ChildActionOnly] 的第一部分帖子,因为它会引发“操作 '_RegistrationCode' 只能由子请求访问。”错误。我也不能删除它,因为这样部分视图会再次呈现为单独的视图。有一个 Action 接受来自部分 A 的数据并返回部分 B 的输出是否是错误的?
    • 您是否将局部视图标记为 PartialViewResult ,而不是 acitonresult?看到这样的问题? stackoverflow.com/questions/8866920/actionlink-to-child-action
    • 我有两个动作。第一个标记为[ChildActionOnly],返回类型PartialViewResult,返回PartialView(...)。第二个(第一个部分发布到)标记为 [HttpPost],返回类型 PartialViewResult 并返回 PartialView(...)。第二个动作仍然没有返回部分视图,或者至少它是唯一呈现的输出。
    • 我认为你应该在 [HttpPost] 旁边添加 [ChildActionOnly] 他们都一起工作,一个视图可以有多个属性: [HttpPost] [ChildActionOnly] public PartialViewResult view1()
    • 感谢您的努力,但我之前已经尝试过,它会在我发布表单后立即返回“操作 '_RegistrationCodeResult' 只能由子请求访问”。
    猜你喜欢
    • 2014-06-02
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 2014-12-06
    相关资源
    最近更新 更多