不能键入文本框双(Can not type a double in a textbox)

2019-06-27 18:34发布

我工作的一个MVC的.NET Web应用程序,我使用实体框架生成模型。 我有一个包含双打属性的类。 我的问题是,当我使用@HTML.EditorFor(model => model.Double_attribute)和测试我的应用程序不能在编辑器中键入双,我只可以输入整数。 (我用剃刀引擎视图)如何解决这个问题? 谢谢。

更新:我发现我可以键入双具有这种格式#,###(逗号后3个数字,但我不希望使用户键入特定的格式,我要接受所有格式(后1个或多个号码逗号)有没有人有一个想法如何解决此问题?问候

Answer 1:

您可以使用添加符号:

[DisplayFormat(DataFormatString = "{0:#,##0.000#}", ApplyFormatInEditMode = true)]
public double? Double_attribute{ get; set; }

而现在......瞧:你可以使用双在自己的看法:

@Html.EditorFor(x => x.Double_attribute)

对于其它的格式,你可以检查这或只是谷歌“DataFormatString双”为这一领域所需选项。



Answer 2:

尝试使用自定义的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() );
}


文章来源: Can not type a double in a textbox