나는 이와 같은 모델을 가지고 있습니다.ValueProvider.GetValue 확장 메서드
public class QuickQuote
{
[Required]
public Enumerations.AUSTRALIA_STATES state { get; set; }
[Required]
public Enumerations.FAMILY_TYPE familyType { get; set; }
두 가지 특성은 열거 형임을 알 수 있습니다.
이제는 내 자신의 모델 바인더를 사용하여 그 순간에 들어 가지 않도록 할 생각입니다.
public class QuickQuoteBinder : DefaultModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
quickQuote = new QuickQuote();
try
{
quickQuote.state = (Enumerations.AUSTRALIA_STATES)
Enum.Parse(typeof(Enumerations.AUSTRALIA_STATES),
bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".state").AttemptedValue);
}
catch {
ModelState modelState = new ModelState();
ModelError err = new ModelError("Required");
modelState.Errors.Add(err);
bindingContext.ModelState.Add(bindingContext.ModelName + ".state", modelState);
}
문제는 각 속성에 대해 힙이 있기 때문에 전체 try catch 블록을 수행해야한다는 것입니다.
내가 할 수 있다고 생각한 것은 나를 위해 전체 블록을 처리 할 확장 메서드를 만드는 것이고 모델 속성과 열거 형을 전달해야합니다.
나는 이렇게 할 수있다;
quickQuote.state = bindingContext.ValueProvider.GetModelValue("state", ...)
등
이 가능합니까?
+1 나는 그것을 매우 감사한다. – griegs
나는 내 자신을 답으로 표시 할 수는 없지만 당신의 것이 너무 좋다 ... – griegs