2011-01-13 35 views
8

Tôi đã có một Xem nơi tôi cho phép đầu vào, các lĩnh vực được thiết lập như là phao trong SQL Server 2008 R2 và cơ sở dữ liệu Tôi đang sử dụng Entity Cơ cấu 4.Tại sao ASP.NET MVC 3 không xác nhận tính hợp lệ của phao của tôi?

Trong khung mẫu Entity lĩnh vực này trông giống như private Nullable<global::System.Double> _TestNumber; này

Và View sử dụng một EditorField để cho phép đầu vào như thế này:

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

tôi tuy nhiên nhận được lỗi này trong tin nhắn Validation: The value '13.51' is not valid for TestNumber. tôi đã thử với một dấu phẩy thay vì thời gian, điều tương tự.

Đề xuất?

Trả lời

2

Nên hoạt động:

Xem mẫu:

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

Bộ điều khiển:

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

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

Xem:

@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" /> 
} 

Một điều mà bạn có thể kiểm và điều này có thể giải thích người hành xử avior bạn đang quan sát là mâu thuẫn giữa văn hóa phía máy khách và văn hóa phía máy chủ. Vì vậy, ví dụ nếu bạn đã bật xác thực phía máy khách nhưng văn bản ứng dụng sử dụng , làm dấu phân cách thập phân thì 13.51 sẽ không xác thực phía máy khách và nếu văn bản máy chủ sử dụng . làm dấu phân cách thập phân thì 13,51 sẽ không xác thực được phía máy chủ. Vì vậy, cả hai 13.5113,51 đều không xác thực được nhưng trên các lớp khác nhau. Để cho máy chủ để sử dụng các nền văn hóa tương tự như các khách hàng mà bạn có thể thiết lập như sau văn hóa để auto trong web.config của bạn:

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

Tôi đã nói thêm rằng toàn cầu hóa trong ' 'nhưng ngay sau khi tôi gửi biểu mẫu có nội dung 'Giá trị '10 .50' không hợp lệ đối với'. Làm thế nào để đảm bảo rằng nó thực sự là cùng một nền văn hóa bây giờ? –

+0

@Filip Ekberg, còn khoảng 10,50' thì sao? –

+0

Điều đó làm việc khi tôi đặt ClientValidationEnabled thành false '' nhưng không phải khi nó được đặt thành true. –

Các vấn đề liên quan