此問題在MVC4中似乎已解決,因爲我無法重現該問題。我的空文本框全部綁定到null
到我的模型的可空,int,double或decimal。沒有問題。所以這個問題可能在別的地方,或者這可能是MVC3中的一個bug,而且現在已經不存在了。這就是說,如果你仍然遇到問題,不能使用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());
剛上關的機會:當實例模型,前綁定到它,當時你的可空雙精度值和小數值有什麼值? –
這將是有益的,如果你可以發佈代碼。 – 2014-04-30 04:04:10