Segregator ze stringami podkreślonymi

Miałem wrażenie, że przy wiązaniu ze złożonym modelem wszystkie właściwości publiczne zostały przetworzone i podjęto próbę powiązania dopasowania dla każdego.

Próbuję rozwiązać problem nazewnictwa zmiennych, aby model

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

działa dobrze z ciągiem zapytań, takim jak

?foo=foo&foo_bar=foo_bar

Czy jest lepszy sposób niż w przypadku segregatora niestandardowego? W każdym razie moje nie działa. FooBar jest po prostu pomijany.

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

    }

Zarejestrowany z

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

questionAnswers(1)

yourAnswerToTheQuestion