이 문제는 문제를 재현 할 수 없어 MVC4에서 해결 된 것으로 보입니다. 내 빈 텍스트 상자는 모두 null
을 내 모델의 nullable int, double 또는 decimal에 바인드합니다. 문제 없음. 문제는 다른 곳에서 발생하거나 MVC3에서 버그로 사용되어 더 이상 존재하지 않을 수 있습니다.
그렇다면 여전히 문제가 발생하여 MVC4를 사용할 수 없다면 자신 만의 맞춤 모델 바인더로 수행해야하는 작업을 정확하게 수행해보십시오. 여기에 소수점을 위해 예를 하나 :
public class NullableDecimalBinder : IModelBinder {
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) {
ValueProviderResult valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
ModelState modelState = new ModelState { Value = valueResult };
object result = null;
if (valueResult.AttemptedValue.Length > 0) {
try {
// Bonus points: This will bind using the user's current culture.
result = Convert.ToDecimal(valueResult.AttemptedValue, System.Globalization.CultureInfo.CurrentCulture);
} catch (FormatException e) {
modelState.Errors.Add(e);
} catch (InvalidOperationException e) {
modelState.Errors.Add(e);
}
}
bindingContext.ModelState.Add(bindingContext.ModelName, modelState);
return result;
}
}
을 그리고, 그것을 사용하는, 당신의 Global.asax의 Application_Start
이 줄을 추가 :
ModelBinders.Binders.Add(typeof(decimal?), new NullableDecimalBinder());
를 그냥 오프 기회에 : 당신은 당신의 모델을 인스턴스화 할 때, 전에 바인딩, nullable double과 decimal은 어떤 값을 가졌습니까? –
코드를 게시 할 수 있다면 도움이 될 것입니다. –