Unterstrich String Model Binder

Ich hatte den Eindruck, dass beim Binden an ein komplexes Modell alle öffentlichen Eigenschaften verarbeitet und für jede eine Übereinstimmungsbindung versucht wurde.

Ich versuche, ein Variablenbenennungsproblem zu lösen, damit ein Modell entsteht

class Model {
      public string Foo {get;set;}
      public string FooBar {get;set;}
}

funktioniert gut mit einem Abfrage-String wie

?foo=foo&foo_bar=foo_bar

Gibt es einen besseren Weg als mit einem benutzerdefinierten Modellordner? Auf jeden Fall funktioniert meins nicht. FooBar wird einfach übersprungen.

public class StringModelBinder : DefaultModelBinder
    {
        public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            var model = base.BindModel(controllerContext, bindingContext);

            if (model != null)
                return model;

            var modelName = Regex.Replace(bindingContext.ModelName, "([a-z])([A-Z])", "$1_$2").ToLowerInvariant();

            var value = bindingContext.ValueProvider.GetValue(modelName);

            return value;
        }

    }

Registriert mit

ModelBinders.Binders.Add(typeof(string), new StringModelBinder());

Antworten auf die Frage(1)

Ihre Antwort auf die Frage