我叫actionmethod UpdateDiscount
从阿贾克斯下方时,误称为:Actionmethod张贴到其他actionmethod
function updateDiscount(e) {
e.preventDefault();
var supplierOrderId = $("#supplier-order-id").val();
var discount = $("#discount-input").val();
console.log("supplierOrderId: " + supplierOrderId);
console.log("discount: " + discount);
$.ajax({
url: '/supplierorder/updatediscount',
type: "POST",
data: { supplierOrderId: supplierOrderId, discount: discount },
success: function (response) {
alert("success");
$("#supplier-order-table-container").html(response);
},
error: function (xhr, textStatus, errorThrown) {
console.log(xhr);
console.log(textStatus);
console.log(errorThrown);
}
});
}
UpdateDiscount的签名看起来是这样的:
<HttpPost()>
Public Function UpdateDiscount(supplierOrderId As Integer, discount As Decimal) As ActionResult
不过,我得到一个500内部错误:
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type
'System.Int32' for method 'System.Web.Mvc.ActionResult
Details(Int32, System.Web.Mvc.FormCollection)' in 'xxx.yyy.SupplierOrderController'.
由于某种原因,Details
改为调用操作方法。值得一提的是,我在这种方法下的断点并未受到打击。 UpdateDiscount中的断点也未命中。我真的不明白这里的问题是什么。我使用Ajax就像在我的项目中的其他地方调用操作方法。
编辑。 route.config(对不起VB:P):
routes.MapRoute("SupplierOrderDetails", "supplierorder/{id}", New With {.controller = "SupplierOrder", .action = "Details"})
...
routes.MapRoute(_
"Default", _
"{controller}/{action}/{id}", _
New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _
)
任何想法?
你确定'Details'被调用的'updateDiscount'被激发的同一事件? – Shyju
该脚本是从'Details()'GET方法生成的视图吗?你怎么触发这个脚本? –
@StephenMuecke按下按钮时会调用该脚本。像这样: onclick =“updateDiscount(event)” – hellogoodnight