我正在开发一个mvc .net web应用程序,我正在使用Entity Framework来生成Model。我有包含双精度属性的类。我的问题是,当我使用@HTML.EditorFor(model => model.Double_attribute)
并测试我的应用程序时,我无法在该编辑器中键入double,我只能输入整数。 (我正在使用Razor引擎查看)如何解决这个问题?感谢。
更新:我发现我可以键入一个具有这种格式的双#,###(逗号后面的3个数字,但我不想让用户输入特定格式,我想接受所有格式(1个或更多)逗号后面的数字) 有谁知道如何解决这个问题?此致
答案 0 :(得分:2)
您可以使用添加符号:
[DisplayFormat(DataFormatString = "{0:#,##0.000#}", ApplyFormatInEditMode = true)]
public double? Double_attribute{ get; set; }
现在......瞧:您可以在视图中使用双击:
@Html.EditorFor(x => x.Double_attribute)
对于其他格式,您可以检查this或只是谷歌“DataFormatString double”您对此字段的所需选项。
答案 1 :(得分:0)
尝试使用自定义数据手册:
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中注册binder:
protected void Application_Start ()
{
...
ModelBinders.Binders.Add( typeof( double ), new DoubleModelBinder() );
}