c# - 为什么使用 Ajax 将参数传递给 ASP.NET Core 中的控制器始终为 NULL?
问题描述
它可以工作,但传递的参数始终为空,此代码在 ASP.NET Framework(.Net Framework) 上的其他项目上工作,但在 ASP.NET Core 中不工作。
var inputParams = "{namex: '" + 'testdata' + "'}";
var xhr = $.ajax({
url: "/Test/MyFunction",
type: 'POST',
dataType: 'json',
data: inputParams,
contentType: 'application/json; charset=utf-8',
success: function (msg) {
},
error: function (xhr) {
}
});
测试控制器包含:
[HttpPost]
public JsonResult MyFunction(string namex) <--- namex is always NULL
{
return Json(false);
}
解决方案
数据未以正确的格式发送,内容无法正确绑定到操作
首先正确构建要发布的有效负载
var inputParams = { namex: "testdata" }; //<-- NOTE JavaScript
var xhr = $.ajax({
url: "/Test/MyFunction",
type: 'POST',
dataType: 'json',
data: JSON.stringify(inputParams), //<-- NOTE CONVERSION TO JSON
contentType: 'application/json; charset=utf-8',
success: function (msg) {
},
error: function (xhr) {
}
});
接下来创建一个模型来保存服务器端的数据
public class MyModel {
public string namex { get; set;}
}
最后重构操作以绑定到请求正文中的预期数据
[HttpPost]
public IActionResult MyFunction([FromBody]MyModel model) {
if(ModelState.IsValid) {
string namex = model.namex;
return Ok();
}
return BadRequest(ModelState);
}
ASP.NET Core 中的参考模型绑定
推荐阅读
- r - 从 R 函数中的一个名称向量调用多个对象
- reactjs - 未捕获的类型错误:无法读取未定义的属性“setLocalizer”
- excel - 根据对一个单元格值的搜索将新行复制到 Excel 工作表中
- c++ - 如何比较两个同名的预处理器宏?
- graphql - 不能对 Type-GraphQL 字段类型使用类型“对象”
- python - 有一个关于 pymongo(cursor) 的问题
- angular - 在 ag-grid 上使用单元格列宽导出到 excel
- go - 在golang谷歌云后端功能中获取参数
- react-native - 使用 React Navigation 版本 5 时如何传递自定义道具?
- node.js - 节点;用户通过远程文件服务器下载