Asp.net 无法在文本框中键入double
我正在开发一个mvc.NETWeb应用程序,并使用实体框架生成模型。我有一些包含双重属性的类。我的问题是,当我使用Asp.net 无法在文本框中键入double,asp.net,asp.net-mvc,asp.net-mvc-3,entity-framework,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Entity Framework,我正在开发一个mvc.NETWeb应用程序,并使用实体框架生成模型。我有一些包含双重属性的类。我的问题是,当我使用@HTML.EditorFor(model=>model.Double\u属性)并测试我的应用程序时,我不能在编辑器中键入Double,我只能键入整数。(我使用Razor引擎查看)如何解决这个问题?谢谢 更新:我发现我可以键入具有此格式的双精度字符#,####(逗号后有3个数字,但我不想让用户键入特定格式,我希望接受所有格式(逗号后有1个或多个数字) 有人知道如何解决这个问题吗?请尝
@HTML.EditorFor(model=>model.Double\u属性)
并测试我的应用程序时,我不能在编辑器中键入Double,我只能键入整数。(我使用Razor引擎查看)如何解决这个问题?谢谢
更新:我发现我可以键入具有此格式的双精度字符#,####(逗号后有3个数字,但我不想让用户键入特定格式,我希望接受所有格式(逗号后有1个或多个数字)
有人知道如何解决这个问题吗?请尝试使用自定义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() );
}
您可以使用添加符号:
[DisplayFormat(DataFormatString = "{0:#,##0.000#}", ApplyFormatInEditMode = true)]
public double? Double_attribute{ get; set; }
现在…瞧,你可以在视图中使用双精度:
@Html.EditorFor(x => x.Double_attribute)
对于其他格式,您可以检查或只搜索“DataFormatString double”此字段所需的选项。是否启用了客户端验证?是否尝试使用不同的小数分隔符:。和,(点和逗号)?这是不正常的,它可以工作,你可能有一些JS脚本产生了问题。删除JS引用并尝试查看。是的,它被激活了。我尝试了两者,但没有work@HediNaily,您也可以发布您的模型定义吗?这应该没有什么区别,但您是否尝试过,
@HTML.EditorFor(model=>model.Double\u属性)
?另外,发布您的型号代码,您是否在型号上有任何属性。Double_属性
?我只能键入具有此格式的Double(逗号后有3个数字,但我不想让用户键入特定格式,我想接受所有格式(逗号后有1个或更多数字)