2012-09-03 18 views
5

Estoy trabajando en una aplicación web mvc .net y estoy usando Entity Framework para generar Model. Tengo clases que contienen atributos que son dobles. Mi problema es que cuando uso @HTML.EditorFor(model => model.Double_attribute) y pruebo mi aplicación, no puedo escribir un doble en ese editor, solo puedo escribir enteros. (Estoy usando el motor Razor para las vistas) ¿Cómo resolver esto? Gracias.No se puede escribir un doble en un cuadro de texto

Actualización: Descubrí que puedo escribir un doble con este formato #, ### (3 números después de la coma pero no deseo que el usuario escriba un formato específico, quiero aceptar todos los formatos (1 o más números después de la coma) ¿alguien tiene una idea de cómo resolver este respecto

+1

¿Está habilitada la validación del cliente? ¿Intentó utilizar diferentes separadores decimales? y, (punto y coma)? – STO

+0

Esto es anormal. Funciona, es probable que tenga algunos scripts JS que crean un problema. Elimina la referencia js e intenta ver. – Massanu

+0

sí, está activado. Intenté con ambos, pero no funcionó –

Respuesta

0

intenta utilizar encargo 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; 
    } 
} 

y registrar aglutinante en global.asax:

protected void Application_Start() 
{ 
    ... 
    ModelBinders.Binders.Add(typeof(double), new DoubleModelBinder()); 
} 
2

Usted podría utilizar añadir anotaciones:

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

Y ahora ... voilà: se puede utilizar el doble en su opinión:

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

Para otros formatos se puede comprobar this o simplemente google " DataFormatString dobla "su opción deseada para este campo.

+0

Solo puedo escribir un doble que tenga este formato #, ### (3 números después de la coma pero no deseo que el usuario escriba un formato específico, quiero aceptar todos los formatos (1 o más números) después de la coma) –

+0

actualizado mi respuesta espero que ayude –

Cuestiones relacionadas