Asp.net-Mvc
接受逗號和點作為小數分隔符[重複]
ASP.NET MVC 中的模型綁定很棒,但它遵循區域設置。在我的語言環境中,小數點分隔符是逗號 (’,’),但使用者也使用點 (’.’),因為他們懶得切換佈局。我希望在一個地方為我的模型中的所有
decimal欄位實現這一點。我應該為類型實現我自己的值提供者(或事件模型綁定器)
decimal還是我錯過了一些簡單的方法來做到這一點?
最乾淨的方法是實現自己的模型綁定器
public class DecimalModelBinder : DefaultModelBinder { public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); return valueProviderResult == null ? base.BindModel(controllerContext, bindingContext) : Convert.ToDecimal(valueProviderResult.AttemptedValue); // of course replace with your custom conversion logic } }並在 Application_Start() 中註冊它:
ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder()); ModelBinders.Binders.Add(typeof(decimal?), new DecimalModelBinder());