我使用向导创建了一个全新的 .netcore 项目,并添加了以下内容。
模型绑定(bind)器提供程序从未被调用
这是一个错误吗?我缺少什么?如果我只是在 GetBinder
中抛出异常,则永远不会到达。
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc(
_ =>
{
_.ModelBinderProviders.Add(new PartyModelBinderProvider());
});
}
提供者
public class PartyModelBinderProvider : IModelBinderProvider
{
public IModelBinder GetBinder(ModelBinderProviderContext context)
{
if (context.Metadata.ModelType == typeof(Party))
return new PartyModelBinder();
return null;
}
}
Binder
public class PartyModelBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
return Task.CompletedTask;
}
}
我的行动方法很简单。
[HttpGet]
public IActionResult Test()
{
return View(new Party());
}
[HttpPost]
public IActionResult Test(Party party)
{
return View(party);
}
最佳答案
事实证明,Add
方法没有达到预期的结果,因为模型绑定(bind)器是按顺序求值的,直到选择一个为止。
在 dotnet core 中添加模型绑定(bind)器的唯一方法是使用 Insert
。
services.AddMvc(
_ =>
{
_.ModelBinderProviders.Insert(0, new PartyModelBinderProvider());
});
关于c# - dotnet core 1.1.1、mvc 1.1.2 中未调用模型绑定(bind)程序提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43167233/