亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# 代碼中的參數為 null,但它在 AJAX 調用中設置

C# 代碼中的參數為 null,但它在 AJAX 調用中設置

C#
慕桂英546537 2021-10-09 16:11:52
我正在使用 C#、.NET Framework 4.7 和 jQuery 1.11.2 開發 ASP.NET MVC 5 應用程序。這個javascript代碼:function RequestCodes(button, poId) {    var URL = '/ProductionOrder/RequestCodeForIncompleteOrder';    //button.attr("disabled", "disabled");    $('#ok').hide();    $('#fail').hide();    $('#cargando').show();    $.ajax({        url: URL,        type: "PUT",        dataType: "HTML",        data: { productionOrderId: poId },        contentType: "json",        success: function () {            $('#cargando').hide();            $('#ok').show();            $("#ok").fadeOut("slow", function () {                $('#ok').hide();            });        },        error: function (jqXHR, textStatus, errorThrown) {            console.log(textStatus, errorThrown);            $('#cargando').hide();            $('#fail').show();            $("#fail").fadeOut("slow", function () {                $('#fail').hide();                //button.removeAttr("disabled");            });        }    });}拋出這個錯誤:對于“TRZF.Web.API.Controllers.ProductionOrderController”中的方法“System.Web.Mvc.ActionResult RequestCodeForIncompleteOrder(Int32)”,參數字典包含不可為空類型“System.Int32”的參數“productionOrderId”的空條目??蛇x參數必須是引用類型、可為空類型或聲明為可選參數。參數名稱:參數。當我調用該方法時: public ActionResult RequestCodeForIncompleteOrder(int productionOrderId)問題在于 javascript 代碼中的參數名稱,但我不知道為什么,因為它與 C# 代碼中的名稱相同。我該如何解決這個錯誤?
查看完整描述

3 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

首先,您通往 api 的路線是否正確?通常它以api/..為前綴


其次,您發送到服務器的客戶端模型與服務器端的預期值類型 ( int)不匹配。


選項 1是將服務器端與客戶端對象進行匹配。


您的客戶端對象 { productionOrderId: poId }等于定義為此的服務器端模型


public class RequestModel

{

    public int productionOrderId { get; set; }

}

使用api控制器方法中的模型,從body中讀取


public ActionResult RequestCodeForIncompleteOrder([FromBody]RequestModel model){}

注意:在使用內容類型 application/json 時,不要忘記在將對象發送到客戶端之前對其進行字符串化, data: JSON.stringify({ productionOrderId: })


選項 2是在路由中發送 productionOrderId


[RoutePrefix("api/ProductionOrder")]

public class ProductionOrder : ApiController

{

    [HttpPut]

    [Route("RequestCodeForIncompleteOrder/{productionOrderId}")]

    public ActionResult RequestCodeForIncompleteOrder(int productionOrderId){}

}

然后使用 url 調用此方法,api/ProductionOrder/RequestCodeForIncompleteOrder/2345其中 2345 是您的訂單 ID


查看完整回答
反對 回復 2021-10-09
?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

在控制器RequestCodeForIncompleteOrder函數中,您需要獲取具有可為空數據類型的 productionOrderId,如下所示:


RequestCodeForIncompleteOrder(int? productionOrderId)

{

//your code here

}

? 表示接受可為空的數據類型


查看完整回答
反對 回復 2021-10-09
  • 3 回答
  • 0 關注
  • 306 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號