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());