I\'m trying to follow the steps in this article using a vNext project and mvc 6. I\'ve been reading through the code here but still a little unsure how to implement this.
This is my implementation of the MVC 6
RC1
custom Model Binder
though I must admit that it's not perfect yet. For some reason the getters
of the ViewModel
are getting hit before the values are bound to them, so we have to add if (xID == 0)
checks, which is lame... and I'm still looking for a solution, anyways, this should help out some:
https://github.com/Serjster/IOCModelBinderExample
Feel free to contribute if you happen to find a solution.
Sample model binder: https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNet.Mvc.Core/ModelBinding/CancellationTokenModelBinder.cs
How to register the binder in Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().Configure<MvcOptions>(options =>
{
options.ModelBinders.Add(typeof(MyModelBinder));
});
I have made a blog post that contains sample of trimming strings automatically in the model.
Blog post is here http://hotzblog.com/asp-net-vnext-defaultmodelbinder-and-automatic-viewmodel-string-trim/
I noticed that adding directly to model binders won't work totally, because model binders are used in order. You will have to first remove the original model binder
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());
});