Bri*_*get 9 .net c# decimal asp.net-mvc-3
我正在ASP.NET MVC 3中开发一个站点.
属性
[DisplayName("Cost"), DisplayFormat(DataFormatString = "{0:F2}", ApplyFormatInEditMode = true)]
public decimal Cost { get; set; }
Run Code Online (Sandbox Code Playgroud)
视图
@Html.EditorFor(x => x.Cost)
Run Code Online (Sandbox Code Playgroud)
视图将Cost显示为1000,00(例如).问题是,验证需要一个点而不是逗号.如何输出1000.00而不是1000,00?或者反转验证以接受逗号而不是点?
编辑.我已将web.config中的全球化设置为sv-SE(瑞典).
cly*_*lyc 11
您需要编写自定义模型绑定器才能执行此操作.
/// <summary>
/// http://haacked.com/archive/2011/03/19/fixing-binding-to-decimals.aspx
/// </summary>
public class DecimalModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext)
{
ValueProviderResult valueResult = bindingContext.ValueProvider
.GetValue(bindingContext.ModelName);
ModelState modelState = new ModelState { Value = valueResult };
object actualValue = null;
try
{
actualValue = Convert.ToDecimal(valueResult.AttemptedValue,
CultureInfo.CurrentCulture);
}
catch (FormatException e)
{
modelState.Errors.Add(e);
}
bindingContext.ModelState.Add(bindingContext.ModelName, modelState);
return actualValue;
}
}
Run Code Online (Sandbox Code Playgroud)
在Global.asax文件中,将以下内容添加到Application_Start方法中
ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5214 次 |
最近记录: |