我叫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