Как правильно создавать собственные связующие модели в MVC6?

Я пытаюсь выполнить шаги, описанные в этой статье, используя проект vNext и mvc 6. Я читал код здесь, но все еще немного не уверен, как это реализовать.

У кого-нибудь есть рабочий пример, которым они могли бы поделиться или указать мне правильное направление?

Мне особенно интересно, как зарегистрировать пользовательское связующее и какие классы я бы унаследовал, так как DefaultModelBinder недоступен.

3 ответа

Решение

Образец подшивки модели: https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNet.Mvc.Core/ModelBinding/CancellationTokenModelBinder.cs

Как зарегистрировать подшивку в Startup.cs

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddMvc().Configure<MvcOptions>(options => 
    { 
        options.ModelBinders.Add(typeof(MyModelBinder)); 
    });

Я сделал пост в блоге, который содержит образец обрезки строк в модели автоматически.

Сообщение в блоге находится здесь http://hotzblog.com/asp-net-vnext-defaultmodelbinder-and-automatic-viewmodel-string-trim/

Я заметил, что добавление напрямую в связующие модели не будет работать полностью, потому что связующие модели используются по порядку. Вам придется сначала удалить оригинальную модель связующего

  services.AddMvc().Configure(options =>
  {
       // Replace MutableObjectModelBinder with extended Trimmer version
       IModelBinder originalBinder = options.ModelBinders.FirstOrDefault(x=>x.GetType() == typeof(MutableObjectModelBinder));
       int binderIndex = options.ModelBinders.IndexOf(originalBinder);
       options.ModelBinders.Remove(originalBinder);
       options.ModelBinders.Insert(binderIndex, new TrimmingModelBinder());
   });

Это моя реализация MVC 6RC1 обычай Model Binder хотя я должен признать, что это еще не идеально. По какой-то причине getters из ViewModel получают удар, прежде чем значения связаны с ними, поэтому мы должны добавить if (xID == 0) проверяет, что неубедительно... и я все еще ищу решение, в любом случае, это должно помочь некоторым: https://github.com/Serjster/IOCModelBinderExample

Не стесняйтесь вносить свой вклад, если вам удастся найти решение.

Другие вопросы по тегам