【发布时间】:2020-02-14 03:57:55
【问题描述】:
我有一个具有 3 个属性的模型,我想使用 ASP.NET Core 进行绑定和验证。从这 3 个属性中,2 个应该从 POSTed JSON 正文绑定,第三个应该从路由参数绑定:
public class CustomModel
{
public string Id_Model { get; set; } //Bind it from RouteData
public string Value { get; set; } //Bind it from Body
public string Type { get; set; } //Bind it from Body
}
[Route("[controller]")]
public CustomController : ControllerBase
{
[HttpPost("{Id_Model}")]
public IActionResult Post(CustomModel model)
{
return Ok();
}
}
问题也是我不想在模型本身上添加任何属性(它将在另一个程序集中声明,并且我不希望在此程序集中来自 Microsoft.AspNetCore 的依赖项)。
我尝试创建一个 CustomModelBinder,但我只能使用来自 bindingContext.ValueProvider 的 Route 数据,而且我不知道如何获取 Body/Json 数据。
我尝试使用FormValueProviderFactory,并用new ValueProviderFactoryContext(bindingContext.ActionContext) 实例化一个,但结果提供者始终是null。
知道如何进行这种混合绑定吗?
【问题讨论】:
-
如果你发现你需要使用绑定属性,你总是可以派生一个类和/或使用适配器模式。
标签: c# asp.net-core-mvc model-binding