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を指定したことを明確に示していますが、nullを送信していると主張していますか?

誰かがここで何が起こっているのか教えてもらえますか? 直し方?

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 に答える