복잡한 모델에 바인딩 할 때 모든 공용 속성이 처리되고 각각에 대해 일치 바인딩이 시도되었다고 생각했습니다.밑줄 문자열 모델 바인더
내가 모델
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 : 내가 자랄 때 나는 이것과 같은 답변을 게시하고 싶다! –
언젠가 Darin이 저를 몇 년 동안 구했던 시간을 더할 것입니다! –