2012-02-09 63 views
5

Tôi có đoạn mã sau:@ Html.ValidationSummary có hoạt động để xác thực phía máy khách trong MVC3 hoặc MVC4 không?

@Html.ValidationSummary(false) 
@Html.ValidationSummary(true, "xxx") 

@using (Ajax.BeginForm(
     action, 
     "Menus", 
     null, 
     new AjaxOptions 
     { 
      UpdateTargetId = "update-message", 
      InsertionMode = InsertionMode.Replace, 
      HttpMethod = "POST", 
      OnSuccess = success 
     }, new { @id = "menuForm" })) 
{ 
    <dl> 
    <dt>@Html.LabelFor(model => model.Order)</dt> 
    <dd>@Html.TextBoxFor(model => model.Order)</dd> 
    <dd>@Html.ValidationMessageFor(model => model.Order)</dd> 
    </dl> 

Khi tôi nhập một giá trị Order of 999 sau đó tôi ngay lập tức có được xác nhận phía khách hàng mà chỉ cho tôi một thông báo lỗi ngay sau theo thứ tự hộp văn bản. Tuy nhiên không có gì xuất hiện trong vùng Html.ValidationSummary. Có thể sử dụng điều này với xác thực phía khách hàng không?

Đây là mô hình của tôi:

public class Menu 
{ 
    [Range(0, 99, ErrorMessage = "{0} must be between {1} and {2}")] 
    [DisplayName("Order")] 
    public int Order { get; set; } 

cấu hình web của tôi:

<appSettings> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 

Trả lời

4

Tôi không chắc chắn 100% nhưng tóm tắt xác nhận tôi có thể tìm thấy trong các ứng dụng mặc định MVC 3 nằm trong Hình thức. Có thể vì tóm tắt xác thực của bạn đang nằm bên ngoài biểu mẫu mà chúng không được cập nhật. Điều gì sẽ xảy ra khi bạn di chuyển bản tóm tắt Xác thực bên trong biểu mẫu?

Từ:

@Html.ValidationSummary(false) 
@Html.ValidationSummary(true, "xxx") 

@using (Ajax.BeginForm(
     action, 
     "Menus", 
     null, 
     new AjaxOptions 
     { 
      UpdateTargetId = "update-message", 
      InsertionMode = InsertionMode.Replace, 
      HttpMethod = "POST", 
      OnSuccess = success 
     }, new { @id = "menuForm" })) 
{ 
    <dl> 
    <dt>@Html.LabelFor(model => model.Order)</dt> 
    <dd>@Html.TextBoxFor(model => model.Order)</dd> 
    <dd>@Html.ValidationMessageFor(model => model.Order)</dd> 
    </dl> 

Để:

@using (Ajax.BeginForm(
     action, 
     "Menus", 
     null, 
     new AjaxOptions 
     { 
      UpdateTargetId = "update-message", 
      InsertionMode = InsertionMode.Replace, 
      HttpMethod = "POST", 
      OnSuccess = success 
     }, new { @id = "menuForm" })) 
{ 
    @Html.ValidationSummary(false) 
    @Html.ValidationSummary(true, "xxx") 
    <dl> 
    <dt>@Html.LabelFor(model => model.Order)</dt> 
    <dd>@Html.TextBoxFor(model => model.Order)</dd> 
    <dd>@Html.ValidationMessageFor(model => model.Order)</dd> 
    </dl> 
+1

Tôi cố gắng này và nó chỉ giống nhau. Vẫn không làm việc. Những gì tôi đã làm là di chuyển Html.ValidationMessageFor đến đầu ngay bên trong biểu mẫu. Điều này làm việc nhưng tôi không thực sự muốn có nhiều Html.ValidationMessageFor tất cả sau khi khác ở đầu trang. –

+0

Trích: 'Những gì tôi đã làm là di chuyển Html.ValidationMessageFor đến đầu ngay bên trong biểu mẫu.' Đó là những gì tôi đã hỏi bạn thử như được thấy trong đoạn mã sau 'To:', trong đó các bản tóm tắt hợp lệ nằm bên trong hình thức. Vì vậy, tôi không biết những gì bạn có nghĩa là bởi 'Tôi đã cố gắng này và nó chỉ giống nhau. vẫn không hoạt động.' – Nope

+1

Về 'nhưng tôi không thực sự muốn có nhiều Html.ValidationMessageFor tất cả cái khác ở đầu trang' đó là một lựa chọn thiết kế ít nhất bạn đã giải quyết được vấn đề tại sao xác thực của bạn tóm tắt không hiển thị. Làm thế nào để trình bày và phong cách cho họ là một câu chuyện tôi đoán. – Nope

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