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:當我長大後,我想能夠發佈這樣的答案! –
有一天,我會加總達林多年來爲我節省的時間! –