Cod*_*ack 13 c# asp.net-mvc asp.net-ajax
我有一个用于编辑东西的视图,比如订单.订单包含可以任意添加的订单项.所以主视图和嵌套的偏见视图.
每个部分应该有一个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.)-->
<%
}
Run Code Online (Sandbox Code Playgroud)
我有一个看起来像这样的控制器:
[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
}
Run Code Online (Sandbox Code Playgroud)
我的麻烦是,当我提交Ajax表单时,我得到Edit方法而不是EditLineItem方法.两个路由都已映射.是否有一些问题,比如"你不能在Html表单中提交Ajax表单",我不知道?
Fra*_*sco 12
我刚才尝试过同样的事情.无论我做了什么,都不会提交AJAX.所以我认为答案是:是的,你不能在常规的html表单中放置一个AJAX表单的提交按钮.
但是,为什么你会将部分提交与完整提交合并?这个imo最简单的解决方法是使用jQuery的JSON请求.
例如,更改下拉列表时更新数量范围文本(id = Order):
<script type="text/javascript">
$(document).ready(function() {
$('select#Order').change(function() {
$.getJSON('/Orders/UpdateQty/' + this.value, {},
function(data) {
$('#qty').html(data);
});
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
和"订单"控制器中的代码:
public class OrdersController : Controller
{
public ActionResult UpdateQty(int id)
{
return Json(yourLibrary.getQuantities(id));
}
}
Run Code Online (Sandbox Code Playgroud)
此链接可能有所帮助.问候
编辑:
所以..链接不再存在.但是由于互联网的备用机器,我们有这个副本 :)