我工作的一个MVC的.NET Web应用程序,我使用实体框架生成模型。 我有一个包含双打属性的类。 我的问题是,当我使用@HTML.EditorFor(model => model.Double_attribute)
和测试我的应用程序不能在编辑器中键入双,我只可以输入整数。 (我用剃刀引擎视图)如何解决这个问题? 谢谢。
更新:我发现我可以键入双具有这种格式#,###(逗号后3个数字,但我不希望使用户键入特定的格式,我要接受所有格式(后1个或多个号码逗号)有没有人有一个想法如何解决此问题?问候
您可以使用添加符号:
[DisplayFormat(DataFormatString = "{0:#,##0.000#}", ApplyFormatInEditMode = true)]
public double? Double_attribute{ get; set; }
而现在......瞧:你可以使用双在自己的看法:
@Html.EditorFor(x => x.Double_attribute)
对于其它的格式,你可以检查这或只是谷歌“DataFormatString双”为这一领域所需选项。
尝试使用自定义的DataBinder:
public class DoubleModelBinder : IModelBinder
{
public object BindModel( ControllerContext controllerContext,
ModelBindingContext bindingContext )
{
var valueResult = bindingContext.ValueProvider.GetValue( bindingContext.ModelName );
var modelState = new ModelState { Value = valueResult };
object actualValue = null;
try
{
actualValue = Convert.ToDouble( valueResult.AttemptedValue,
CultureInfo.InvariantCulture );
}
catch ( FormatException e )
{
modelState.Errors.Add( e );
}
bindingContext.ModelState.Add( bindingContext.ModelName, modelState );
return actualValue;
}
}
并注册在Global.asax中粘结剂:
protected void Application_Start ()
{
...
ModelBinders.Binders.Add( typeof( double ), new DoubleModelBinder() );
}