gpt4 book ai didi

c# - Html.BeginForm 内的 Ajax.BeginForm

转载 作者:可可西里 更新时间:2023-11-01 08:08:59 26 4
gpt4 key购买 nike

我有一个用于编辑内容的 View ,比如订单。订单有可以任意添加的行项目。所以一个主视图和嵌套的局部 View 。

每个部分都应该有一个 ajax 表单,用于调整每个订单项或其他内容的数量。

因此:

Html.BeginForm()
{%>
Ship to: blah blah blah
<%
Ajax.BeginForm("EditLineItem", "Order", new { OrderLineItemID = Model.ObjectID }, itemAjaxOptions))
{
Item qty blah blah blah

<--! (ajax form's submit button, etc.)-->
}
%>
<--! (ajax form's submit button, etc.)-->
<%
}

我有一个看起来像这样的 Controller :

[ActionName("Edit")]
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public ActionResult Edit(int orderID)
{
blah, blah
}

[ActionName("EditLineItem")]
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public ActionResult EditLineItem(Guid orderLineItemID)
{
blah, blah
}

我的问题是当我提交 Ajax 表单时,我得到的是 Edit 方法而不是 EditLineItem 方法。两条路线都已映射。是否有一些我不知道的陷阱,例如“您不能在 Html 表单中提交 Ajax 表单”?

最佳答案

我刚才尝试了完全相同的事情。无论我做什么,它都不会执行 AJAX 提交。所以我认为答案是:是的,您不能在常规 html 表单中放置 AJAX 表单的提交按钮。

但是,为什么要将部分提交与完整提交合并?对此 imo 最简单的解决方法是将 JSON 请求与 jQuery 一起使用。

例如,当您更改下拉列表 (id=Order) 时更新数量跨度文本:

<script type="text/javascript">
$(document).ready(function() {
$('select#Order').change(function() {
$.getJSON('/Orders/UpdateQty/' + this.value, {},
function(data) {
$('#qty').html(data);
});
});
});

</script>

以及“订单” Controller 中的代码:

public class OrdersController : Controller
{
public ActionResult UpdateQty(int id)
{
return Json(yourLibrary.getQuantities(id));
}
}

Link可能有帮助。问候

编辑:

所以..链接不再存在。但是多亏了互联网回溯机,我们有this copy :)

关于c# - Html.BeginForm 内的 Ajax.BeginForm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/786055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com