Pet*_*sev 13 asp.net-mvc asp.net-core
我可以同时使用FromForm和FromBody属性吗?
public IActionResult Index([FromBody][FromForm] Person model){
.....
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*und 23
不,这是不可能的.
该FromForm属性用于来自内容类型发送的提交表单的传入数据,application/x-www-url-formencoded
而FromBody将以默认方式解析模型,在大多数情况下application/json,由请求正文通过内容类型发送.
小智 7
请查看这个库 https://github.com/shamork/Toycloud.AspNetCore.Mvc.ModelBinding.BodyAndFormBinding
我使用了源代码并进行了一些修改,因为 .Net 5 存在问题,ComplexTypeModelBinderProvider 已过时
简而言之,这可以防止必须这样做
public class JsonRequestItem {
public string jsonRequest { get; set; }
}
[HttpPost]
[ActionName("NewRequest")]
[Consumes("application/json")]
public IActionResult NewRequestFromBody([FromBody]JsonRequestItem item) {
return NewRequest(item.jsonRequest);
}
[HttpPost]
[ActionName("NewRequest")]
[Consumes("application/x-www-form-urlencoded")]
public IActionResult NewRequestFromForm([FromForm]JsonRequestItem item) {
return NewRequest(item.jsonRequest);
}
private IActionResult NewRequest(string jsonRequest) {
return new EmptyResult(); // example
}
Run Code Online (Sandbox Code Playgroud)
现在您可以简化为一个操作并同时获取 FromBody 和 FromForm
[HttpPost]
[ActionName("NewRequest")]
public IActionResult NewRequestFromBodyOrDefault([FromBodyOrDefault]JsonRequestItem item) {
return new EmptyResult(); // example
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9009 次 |
| 最近记录: |