簡體   English   中英

AJAX在數據中發送日期,但C#控制器不包含數據

[英]AJAX sends date in data but C# controller does not contain data

我在發送Ajax請求的MVC網站中遇到奇怪的行為。 以下是其中一個函數的調用:

$.ajax ({
    data: JSON.stringify({event_id: params.eventId, start_date: params.startDate}),
    type: "POST",
    async: false,
    contentType: "application/json; charset=utf-8",
    url: '@Url.Action("RandomFunction")',
    success: function(return string) {
        //DoSomeStuff
    }
});

然后在控制器中有此功能:

[HttpPost]
public ActionResult RandomFunction(int eventId = 1, string startDate = "")
{
    if (startDate == string.Empty) {
        //Handle missing date
    }

    //DoSomeMagic
}

Google Chrome的開發者工具顯示所需數據是通過發布請求發送的。

Request Payload:
event_id: "1"
start_date: "2015-06-08T22:00:00.000Z"

但是一旦到達RandomFunction,startDate字符串將被設置為空字符串,而不是通過請求發送的日期,並且代碼將在Handle missing date部分中結束

難道我做錯了什么? 我暫時無法弄清楚。

這個例子對我有用:

$.ajax ({
    data: {
        eventId: params.eventId, 
        startDate: params.startDate
    },
    type: "POST",
    async: false,
    contentType: "application/json; charset=utf-8",
    url: '@Url.Action("RandomFunction")',
    success: function(return string) {
        //DoSomeStuff
    }
});

和C#代碼:

[HttpPost]
public ActionResult RandomFunction(int eventId, string startDate)
{
    if (startDate == string.Empty) {
        //Handle missing date
    }

    //DoSomeMagic
}

嘗試一下,您在控制器中的傳遞參數名稱和接收參數名稱是不同的,因此使它們相同。

[HttpPost]
public ActionResult RandomFunction(int event_id= 1, string start_date= "")
{
    if (start_date== string.Empty) {
        //Handle missing date
    }

    //DoSomeMagic
}

問候,

我希望您的問題是由於使用JSON.stringify之間存在差異

"{event_id: 1, start_date: \"2015-06-08T22:00:00.000Z\"}"

只是一個字符串而已

{event_id: 1, start_date: "2015-06-08T22:00:00.000Z"}

這是MVC框架可以解析的JObject。

還要確保JSON中的名稱與參數名稱匹配

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM