【问题标题】:Submiting a partial view from parent view从父视图提交部分视图
【发布时间】:2015-09-21 14:19:35
【问题描述】:

所以,我有一个部分的看法,让我们说:

@model myModel
@{
Layout = null;
}

....
Html.BeginForm("action", "Controller", FormMethodPost)
..... 
.....
.....
.....
<input type="submit" value = "Go"/>
}

在这个局部视图内部,我正在渲染第二个局部视图,所以这将是:

@model myModel
@{
Layout = null;
}

....
Html.BeginForm("action", "Controller", FormMethodPost)
..... 
@{Html.RenderPartial("secondPartial");}
.....
.....
<input type="submit" value = "Go"/>
}

第二部分也提交了一个表单,但这次使用 Ajax,如下所示:

@model myModel
@{
Layout = null;
}

....
Ajax.BeginForm("secondAction", "sameController", new AjaxOption { HttpMethod = "POST", InsertionMode=InsertionMode.Replace, UpdateTargetID = "thisPartialDivId"})
..... 
.....
.....
.....
<input type="submit" value = "Go"/>
}

但是现在,每次我提交第二个部分时,它都会提交它的父级,其余字段为空,甚至我是否专门告诉它要提交哪个操作只是上升到它的父级并提交。

有什么想法吗?谢谢 :)

附:原因:第二个视图为属性提交了一个新值,然后它应该将该值添加到父视图的下拉列表中。父级创建对象。

Kinda 通过添加 AntiForgeryToken 解决了这个问题,但后来我又遇到了另一个错误,因为我在该父视图中有 3 个(父视图上有一个,每个部分有 1 个)。仍然在这里寻找解决方案。 :)

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-partialview


    【解决方案1】:

    看起来您正在嵌套这些表单。这是行不通的。见this question on the topic of nesting。我对规范的理解是您的第二个表单声明将被忽略。这也符合您的结果。

    在您对自己的实际目标知之甚少的情况下,很难提供替代方案。但是,在我看来,当涉及 AJAX 时,没有理由嵌套这些表单。您应该能够将 AJAX 表单移动到父表单定义之外 以获得所需的行为。当 AJAX 返回时,您仍然可以修改“父”表单中的元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多