4
我的印象是,绑定到复杂模型时,所有公共属性都被处理,并尝试为每个属性进行匹配绑定。下划线字符串模型绑定器
我想,这样一个模型
class Model {
public string Foo {get;set;}
public string FooBar {get;set;}
}
作品很好地与下面的查询字符串
?foo=foo&foo_bar=foo_bar
难道还有比一个自定义的模型绑定一个更好的办法来解决一个变量的命名问题?无论如何,我的工作不起作用。 FooBar简单地被跳过。
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;
}
}
登记
ModelBinders.Binders.Add(typeof(string), new StringModelBinder());
谢谢(再次)Darin!那简直就是美丽。 – Martin
+1:当我长大后,我想能够发布这样的答案! –
有一天,我会加总达林多年来为我节省的时间! –