2011-01-13 14 views
8

Tengo una vista en la que permiten la entrada, los campos se establecen como flotador en mi base de datos de SQL Server 2008 R2 y estoy usando Entidad Framwork 4.¿Por qué ASP.NET MVC 3 no valida mis flotadores correctamente?

En el modelo de Entity Framework el campo se ve así private Nullable<global::System.Double> _TestNumber;

y la vista utiliza un EditorField para permitir la entrada de la siguiente manera:

<div class="editor-field"> 
    @Html.EditorFor(model => model.TestNumber) 
    @Html.ValidationMessageFor(model => model.TestNumber) 
</div> 

Sin embargo, estoy consiguiendo este error en el Mensaje de validación: The value '13.51' is not valid for TestNumber. he tratado con una coma en lugar del periodo, lo mismo.

Sugerencias?

Respuesta

2

Eso debería funcionar:

Ver Modelo:

public class MyViewModel 
{ 
    public double? TestNumber { get; set; } 
} 

controlador:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(new MyViewModel { TestNumber = 13.51 }); 
    } 

    [HttpPost] 
    public ActionResult Index(MyViewModel model) 
    { 
     return View(model); 
    } 
} 

Vista:

@model AppName.Models.MyViewModel 
@{ 
    ViewBag.Title = "Home Page"; 
} 
@using (Html.BeginForm()) 
{ 
    @Html.EditorFor(x => x.TestNumber) 
    @Html.ValidationMessageFor(x => x.TestNumber) 
    <input type="submit" value="OK" /> 
} 

Una cosa que se puede pago y envío y lo que podría explicar el beh lo que está observando es la inconsistencia entre la cultura del lado del cliente y la cultura del lado del servidor. Por ejemplo, si ha habilitado la validación del lado del cliente pero el cultivo del cliente usa , como separador decimal, 13.51 fallará la validación del lado del cliente y si el cultivo del servidor usa . como separador decimal, entonces 13,51 fallará la validación del lado del servidor. Por lo tanto, 13.51 y 13,51 no se pueden validar pero en capas diferentes. Para que el servidor para utilizar la misma cultura que el cliente puede establecer lo siguiente a la cultura auto en su web.config:

<globalization 
    requestEncoding="utf-8" 
    responseEncoding="utf-8" 
    culture="auto" 
    uiCulture="auto" 
/> 
+1

He añadido que la globalización en '' pero tan pronto como me someto la forma en que dice 'El valor '10 .50 'no es válido para'. ¿Cómo me aseguro de que realmente sea la misma cultura ahora? –

+0

@Filip Ekberg, ¿qué pasa con '10,50'? –

+0

Eso funciona cuando configuro ClientValidationEnabled en false '' pero no cuando se establece en verdadero. –

Cuestiones relacionadas