0

我的 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 作为参数提供给它,但随后声称我将其发送为空值?

有人可以告诉我这里发生了什么吗?怎么修?

4

2 回答 2

4

默认模型绑定器将绑定到一个名为“id”的参数,但您的参数名为 invoiceId,因此它不知道将值绑定到它。一个快速的解决方法是将您的 POST URL 更改为'/Invoice/RejectInvoice/?invoiceId='+ 3.

于 2012-04-15T21:35:36.670 回答
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 已经有一段时间了)

于 2012-04-15T23:08:32.573 回答