已經在網上學習了許多教程,但仍然得到相同的結果。考慮到我想要的本質上就是將一個變數發送到控制器,Microsoft 的檔案是如此深入。
我的客戶端代碼如下所示:
var obj = { send: 'test' };
$.ajax({
url: '/Countries/GetVotes',
type: 'POST',
contentType: "application/json",
data: JSON.stringify(obj),
success: function (data) {
if (data === null) {
// TODO
} else {
console.log(data);
}
},
error: function (error) {
console.log(error);
}
});
然后控制器看起來像這樣:
[HttpPost]
public async Task<JsonResult> GetVotes(string send)
{
try
{
var votes = ctx.Candidates.Where(x => x.Country == send)
.OrderByDescending(x => x.Votes)
.ToList();
return Json(votes);
}
catch (Exception ex)
{
logger.Error(ex);
}
return Json("foo");
}
所有標準并用于在 .NET 框架 4.7.2 中作業,任何做過任何 MVC 的人都會非常熟悉這種方法。
我已決定嘗試使用 .net core 3.1。我遇到了所有正確的斷點,我遇到的問題是名為“send”的字串作為空值發送到我的控制器。
有誰知道最簡單的方法來讓這個作業?
uj5u.com熱心網友回復:
你傳入的是一個 JSON 物件
{ send: "test" }
您在控制器的請求正文中期望的只是一個字串。您可以嘗試創建一個代表您期望的資料結構的請求物件:
public class Request {
public string send { get; set; }
}
然后你可以更新你的控制器方法
public async Task<JsonResult> GetVotes([FromBody]Request request)
并通過 request.send 進一步訪問 send 屬性。
uj5u.com熱心網友回復:
當您已經發送字串時,您不需要字串化。并洗掉內容型別。默認就可以了。
所以試試這個
$.ajax({
url: '/Countries/GetVotes',
type: 'POST',
data: obj,
success: function (data) {
if (data === null) {
// TODO
} else {
console.log(data);
}
},
error: function (error) {
console.log(error);
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327897.html
標籤:C# json 。网 asp.net-mvc asp.net核心
