【发布时间】:2022-01-14 16:17:27
【问题描述】:
我研究了类似的主题,例如 this one 和 this one,并确定这值得拥有自己的主题,因为我在一个小时的研究中找不到任何帮助。
我正在尝试从 jQuery 请求向 ASP.NET Core 主机发送 POST 请求。这就是我在前端格式化我的 POST 请求的方式:
$.ajax({
url: "/Merge",
type: "POST",
contentType: 'application/x-www-form-urlencoded',
datatype: "json",
data: {
"example": "examplecontent"
},
success: function (data) {
alert(data);
}
});
这是我在后端提取它以进行测试的方式:
[HttpPost]
public IActionResult Index()
{
var x = HttpContext.Request.Form;
Dictionary<string, string> exampleDict = new();
//exampleDict.Add("Testing", HeaderElem);
JsonResult result = new(exampleDict);
return result;
}
尽管包含完整的标头,但我在后端收到此错误,声称我有一个“不正确的内容类型”:
我的请求可能有什么问题?
【问题讨论】:
-
作为实际问题的旁白——你为什么首先使用
HttpContent.Request.Form? MVC 旨在与请求中的模型一起使用——这就是为什么我们有 ModelBinder 将请求参数绑定到具体对象的原因。为什么不使用它呢? -
@RoryMcCrossan 我已经使用 MVC 标准在线跟踪食谱花了一天半的时间,但无济于事。我已经构建了模型,但我选择不使用它们,直到我弄清楚我的 Post 请求有什么问题。解决此问题后,我将重新使用模型。
-
我只是尝试使用一个全新的 ASP.NET Core MVC 项目(针对 .NET 5)进行重现,并且效果很好。你的控制器(我假设
MergeController)是否继承自Controller?例如public class MergeController : Controller -
@EthanHill 在这种情况下,这个问题听起来像是您在某处的配置中犯了错误,因为代码将使用默认配置。
-
您在 ajax 请求中发布到“/Merge”。但是您向我们展示的控制器操作是针对 Index 的。您是否在 ajax 和您正在调试的操作之间进行某种重定向?
标签: c# jquery asp.net-mvc asp.net-core .net-core