2017-04-02 5 views
2

Ich habe ein neues .netcore-Projekt mithilfe des Assistenten erstellt, und fügte Folgendes hinzu.Modell Binder-Anbieter nicht in Dotnet-Core 1.1.1, Mvc 1.1.2

Der Provider Modell Binder wird nie Genannt

Ist das ein Fehler? Was vermisse ich? Wenn ich nur eine Ausnahme in GetBinder werfe, wird es nie erreicht.

public void ConfigureServices(IServiceCollection services) 
{ 
    // Add framework services. 
    services.AddMvc(
     _ => 
     { 
      _.ModelBinderProviders.Add(new PartyModelBinderProvider()); 
     }); 
} 

Der Anbieter

public class PartyModelBinderProvider : IModelBinderProvider 
{ 
    public IModelBinder GetBinder(ModelBinderProviderContext context) 
    { 
     if (context.Metadata.ModelType == typeof(Party)) 
      return new PartyModelBinder(); 
     return null; 
    } 
} 

Das Bindemittel

public class PartyModelBinder : IModelBinder 
{ 
    public Task BindModelAsync(ModelBindingContext bindingContext) 
    { 
     return Task.CompletedTask; 
    } 
} 

sind meine Aktion Methoden recht einfach.

[HttpGet] 
public IActionResult Test() 
{ 
    return View(new Party()); 
} 

[HttpPost] 
public IActionResult Test(Party party) 
{ 
    return View(party); 
} 
+0

Haben Sie die 'AddMvc'-Methode mit einem Parameter namens' _' versucht? – VMAtm

Antwort

2

Es stellte sich heraus, dass die Add Methode nicht das gewünschte Ergebnis zu erzielen, als das Modell, um Bindemittel ausgewertet werden, bis eines ausgewählt wird.

Die einzige Möglichkeit zum Hinzufügen eines Modellbinders in dotnet core ist Insert zu verwenden.

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