2011-09-11 27 views
12

Tôi đã thêm trình trợ giúp Html ValidationSummary cho lớp Chế độ xem của tôi có 5 trường bắt buộc. Và nó hoạt động có những từ màu đỏ đẹp thiếu 1, thiếu 2, vv Nhưng tôi cần hiển thị chỉ một tin nhắn không phải là năm của chúng (giống như: "Đầu vào của bạn không hợp lệ."). Điều này có thể được thực hiện với ValidationSummary?Cách xóa danh sách khỏi tóm tắt xác thực

Trả lời

14

Bạn có hai lựa chọn (ít nhất):

Hoặc sử dụng tóm tắt xác nhận và loại trừ lỗi bất động sản:

@Html.ValidationSummary(true, "The input is not valid") 

hoặc kết hợp một thông báo lỗi với một phím tùy chỉnh trong hành động của bạn:

if (!ModelState.IsValid) 
{ 
    ModelState.AddModelError("myerrorsummary", "The input is not valid"); 
} 

và hiển thị nó trên trang của bạn:

@Html.ValidationMessage("myerrorsummary") 
+1

Các giải pháp đầu tiên có vẻ tốt nhất bởi vì nó sẽ làm việc phía khách hàng, nhưng nó chỉ hoạt động khi không sử dụng UnobtrusiveJavaScript! – pauloya

+0

Tôi đã thêm giải pháp của mình. – pauloya

4

Bạn có thể thử bỏ qua những người trợ giúp nếu tất cả những gì bạn muốn làm chỉ đơn giản là hiển thị một thông báo nếu ModelState không hợp lệ. Chỉ cần kiểm tra ModelState trong phạm vi ViewData và điều đó sẽ hoạt động.

@if (!ViewData.ModelState.IsValid) 
{ 
    <p>Your input is not valid.</p> 
} 
2

Nếu bạn nhìn vào mã nguồn MVC3 bạn sẽ thấy rằng, hiện nay, nếu bạn sử dụng ValidationSummary với excludePropertyErrors=true trong khi có UnobtrusiveJavaScriptEnabled, sẽ không có bất kỳ bản tóm tắt xác nhận trả lại.

Tôi đã có thể hiển thị một tin nhắn duy nhất với MVC3 với UnobtrusiveJavascript được bật, để xác thực phía máy khách. Không sử dụng @Html.ValidationSummary ở tất cả, và đưa ra:

@{ 
    //Show the message when there are server side errors 
    ViewBag.ValidationSummaryClass = ViewData.ModelState.IsValid ? "validation-summary-valid" : "validation-summary-errors"; 
} 
<div class="@ViewBag.ValidationSummaryClass" data-valmsg-summary="true"> 
    <span>Before you can continue, please make sure you have completed the mandatory fields highlighted above.</span> 
    <ul style="display:none"/> 
</div> 

Thông báo các display:none, javascript không phô trương vẫn lấp đầy danh sách với thông báo lỗi, nhưng chúng được giấu kín.

0

Một brute force cách tiếp cận tôi đã sử dụng trong MVC3:

if (!ModelState.IsValid) 
{ 
    ModelState.AddModelError("", "Some contextual error message"); 
} 

và hiển thị nó trên trang của bạn:

<% if(!ViewData.ModelState.IsValid) { %> 
    <span class="error"><%=ViewData.ModelState[String.Empty].Errors[0].ErrorMessage %> </span> 
<% } %> 
Các vấn đề liên quan