在ASP.NET Core MVC中,控制器默认使用Model Binding来自动解析和绑定表单数据。然而,有时候在表单提交时,控制器无法正确解码表单数据,可能是由于编码问题导致的。下面是一种解决方法,可以手动指定表单数据的编码:
[HttpPost]
public IActionResult MyAction()
{
// 处理POST请求
// ...
}
[HttpPost]
public IActionResult MyAction([FromForm] MyModel model)
{
// 使用从表单数据绑定的模型
// ...
}
[HttpPost]
public IActionResult MyAction([FromForm] MyModel model)
{
Request.Body.Seek(0, SeekOrigin.Begin);
using (var reader = new StreamReader(Request.Body, Encoding.UTF8))
{
var formData = reader.ReadToEnd();
// 处理表单数据
// ...
}
}
在这个示例中,我们使用Encoding.UTF8来解码表单数据,你也可以根据实际情况选择其他编码方式。这样就可以手动解码表单数据,解决控制器无法解码表单数据的问题。