2020-10-22 14:59:36 +08:00
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
2016-09-04 23:34:16 +08:00
|
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
|
|
|
|
|
|
namespace OpenAuth.Mvc.Models
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 将前端传来的FormData数据转为Jobject类型
|
|
|
|
|
/// 注:前端如果是application/json,可以直接转JOjbect!
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class JobjectModelBinder :IModelBinder
|
|
|
|
|
{
|
2020-10-22 14:59:36 +08:00
|
|
|
|
public Task BindModelAsync(ModelBindingContext bindingContext)
|
2016-09-04 23:34:16 +08:00
|
|
|
|
{
|
|
|
|
|
var obj = new JObject();
|
2020-10-22 14:59:36 +08:00
|
|
|
|
|
|
|
|
|
//// Specify a default argument name if none is set by ModelBinderAttribute
|
|
|
|
|
//var modelName = bindingContext.BinderModelName;
|
|
|
|
|
//if (string.IsNullOrEmpty(modelName))
|
|
|
|
|
//{
|
|
|
|
|
// modelName = "obj";
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//// Try to fetch the value of the argument by name
|
|
|
|
|
//var valueProviderResult =
|
|
|
|
|
// bindingContext.ValueProvider.GetValue(modelName);
|
|
|
|
|
|
|
|
|
|
//这个地方会报StringValues的异常,好奇怪,只能调试源码了
|
|
|
|
|
var request = bindingContext.HttpContext.Request;
|
|
|
|
|
foreach (var item in request.Form)
|
2016-09-04 23:34:16 +08:00
|
|
|
|
{
|
2020-10-22 14:59:36 +08:00
|
|
|
|
obj[item.Key] = item.Value[0];
|
2016-09-04 23:34:16 +08:00
|
|
|
|
}
|
|
|
|
|
|
2020-10-22 14:59:36 +08:00
|
|
|
|
bindingContext.Result = ModelBindingResult.Success(obj);
|
|
|
|
|
return Task.CompletedTask;
|
|
|
|
|
}
|
2016-09-04 23:34:16 +08:00
|
|
|
|
}
|
|
|
|
|
}
|