[英]Failing to pass a very long string as parameter in an ajax call to an asp.net controller
在我的api控制器中,我需要傳遞兩個參數:一個整數+一個字符串。 這個字符串是一個json變量,所以它是一個很長的字符串,我不能作為URL的一部分傳遞。
我嘗試將其作為POST參數傳遞(在ajax調用的data屬性中),但出現錯誤:僅讀取第一個參數,因此傳遞的URL不正確。
我應該怎么做?
編輯
JS代碼:
function SavingFloor(FloorId, Json) {
$.ajax({
beforeSend: function (xhr) {
xhr.setRequestHeader('verifySession', verifySession());
xhr.setRequestHeader('Authorization', '@HttpContext.Current.Session["BaseAuth"]');
},
url: "/api/Floor/SaveFloor?FloorID=" + FloorId, //api: error in decoding json (the json can't be passed as parameter)
type: "POST",
data: {
jsonstring: Json
},
dataType: 'text/html',
success: function (data) {
alert('success');
}
});
}
控制器:
[HttpPost]
public void SaveFloor(int floorID, string jsonstring)
{
Floor floor = db.FloorSet.Find(floorID);
JavaScriptSerializer ser = new JavaScriptSerializer();
Dictionary<string, object> dict = ser.Deserialize<Dictionary<string, object>>(jsonstring);
floor.SavedJson = jsonstring;
floorRepository.Update(floor);
floorRepository.Save();
}
您可以嘗試將[FromUri]
和[FromBody]
屬性添加到SaveFloor
方法。 您可以使用常規GET
發送floorID並將長jsonstring
作為POST
正文發送。 當前,Web API只能從POST
正文讀取單個參數。 您需要將兩個變量封裝在一個對象中,或嘗試執行以下操作:
public void SaveFloor([FromUri]int floorID, string jsonstring)
你並不需要指定[FromBody]
以jsonstring
,因為它是在默認的POST
請求。 此后,不要忘記更改客戶端代碼以在查詢字符串中發送floorID
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.