如何在 Controller 中检索 POST 数据
How to retrieve POST data in Controller
我正在尝试 POST
一个值 ASP NET Core Controller
。
Controller
不断获得 null
值,我不明白为什么。
发送请求
string uri = "/api/create";
//some POCO--not important
CampaignRequest<CreateCampaignParams> req = new
CampaignRequest<CreateCampaignParams> { Data = campaignParams, Ticket = this.ticket };
var content = new StringContent(JsonConvert.SerializeObject(req), Encoding.UTF8, "application/json");
var response = await this.http.PostAsync(uri, content);
接收器
[HttpPost]
[Route("api/create")]
public async Task<long> CreateAsync([FromBody]CampaignRequest<CreateCampaignParams>pars)
{
//--- the received argument is null...i have tried putting as a string argument to no avail
try
{
var client = new CampaignClient(uri,pars.Ticket.Value);
long rez=await client.CreateCampaignAsync(pars.Data);
return rez;
}
catch (Exception)
{
return 0;
}
}
我试过将Controller
方法的参数设置为字符串,然后反序列化it.Still字符串为空。
如何在控制器中检索 StringContent
?
最可能的原因是模型绑定错误。
要检查这一点,请像这样修改您的控制器方法:
[HttpPost]
[Route("api/create")]
public async Task<long> CreateAsync([FromBody]CampaignRequest<CreateCampaignParams> pars)
{
var errorCount = ModelState.ErrorCount;
并在 errorCount 行设置断点,如果计数 > 0,则进一步检查 ModelState 对象以查找特定错误。
此外,您确定您的 POST 请求使用 F12 浏览器工具正确地将您的对象添加到正文中。如果不确定,请附上截图。
我正在尝试 POST
一个值 ASP NET Core Controller
。
Controller
不断获得 null
值,我不明白为什么。
发送请求
string uri = "/api/create";
//some POCO--not important
CampaignRequest<CreateCampaignParams> req = new
CampaignRequest<CreateCampaignParams> { Data = campaignParams, Ticket = this.ticket };
var content = new StringContent(JsonConvert.SerializeObject(req), Encoding.UTF8, "application/json");
var response = await this.http.PostAsync(uri, content);
接收器
[HttpPost]
[Route("api/create")]
public async Task<long> CreateAsync([FromBody]CampaignRequest<CreateCampaignParams>pars)
{
//--- the received argument is null...i have tried putting as a string argument to no avail
try
{
var client = new CampaignClient(uri,pars.Ticket.Value);
long rez=await client.CreateCampaignAsync(pars.Data);
return rez;
}
catch (Exception)
{
return 0;
}
}
我试过将Controller
方法的参数设置为字符串,然后反序列化it.Still字符串为空。
如何在控制器中检索 StringContent
?
最可能的原因是模型绑定错误。
要检查这一点,请像这样修改您的控制器方法:
[HttpPost]
[Route("api/create")]
public async Task<long> CreateAsync([FromBody]CampaignRequest<CreateCampaignParams> pars)
{
var errorCount = ModelState.ErrorCount;
并在 errorCount 行设置断点,如果计数 > 0,则进一步检查 ModelState 对象以查找特定错误。
此外,您确定您的 POST 请求使用 F12 浏览器工具正确地将您的对象添加到正文中。如果不确定,请附上截图。