模型绑定器提供程序未在dotnet核心1.1.1,mvc 1.1.2中调用

时间:2017-04-02 10:25:05

标签: c# asp.net-core asp.net-core-mvc .net-core

我使用向导创建了一个全新的.netcore项目,并添加了以下内容。

永远不会调用模型Binder提供程序

这是一个错误吗?我错过了什么?如果我只是在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;
    }
}

活页夹

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);
}

1 个答案:

答案 0 :(得分:2)

事实证明Add方法没有达到预期的结果,因为模型绑定器按顺序进行评估,直到选择了一个。

dotnet核心中添加模型绑定器的唯一方法是使用Insert

services.AddMvc(
    _ =>
    {
        _.ModelBinderProviders.Insert(0, new PartyModelBinderProvider());
    });