我的mvc控制器中有这个方法:
public void RejectInvoice(int invoiceId)
{
var invoice = _unitOfWork.InvoiceRepository.Get((int)invoiceId);
invoice.Rejected = true;
invoice.RejectedDateTime = DateTime.Now;
_unitOfWork.InvoiceRepository.InsertUpdate(invoice);
_unitOfWork.Save();
}
在我的脚本文件中,我使用:
调用它$.post('/Invoice/RejectInvoice/'+ 3, function (data) {
});
在萤火虫中我得到了:
什么...........?它清楚地表明我已经提供了3作为参数,但后来声称我发送它为空?
有人可以告诉我这里发生了什么吗?怎么解决?
答案 0 :(得分:4)
默认模型绑定器将绑定到名为“id”的参数,但您的参数名为invoiceId,因此它不知道将值绑定到它。快速解决方法是将您的POST URL更改为'/Invoice/RejectInvoice/?invoiceId='+ 3
。
答案 1 :(得分:0)
如果你正在做一个帖子,你还应该为你的方法修饰[HttpPost]属性和 检查发送的参数,我的建议是:
[HttpPost]
public void RejectInvoice(FormCollection collection)
{
var id = -1;
if(int.TryParse(collection["invoiceId"], out id))
{
var invoice = _unitOfWork.InvoiceRepository.Get(id);
invoice.Rejected = true;
invoice.RejectedDateTime = DateTime.Now;
_unitOfWork.InvoiceRepository.InsertUpdate(invoice);
_unitOfWork.Save();
}
}
至于jquery:
$.post("/Invoice/RejectInvoice/", { invoiceId: "3"}, callback );
(我想,自从我上次使用$ .post以来已经有一段时间了)