2009-04-07 36 views
13

Tôi nhận thấy một vấn đề lạ khi sử dụng ModelState.AddModelError để xác thực đầu vào trên biểu mẫu của tôi. Đầu ra từ Html.ValidationMessage không phải là giá trị HTML thực sự nhưng giá trị được mã hóa và do đó kiểu CSS không được áp dụng cho thông báo lỗi.ModelState.AddModelError mã hóa HTML

Ví dụ:

private string errorMessage = "<span class=\"negative\">{0}</span><br class=\"hid\" />"; 
ModelState.AddModelError("title", String.Format(errorMessage, "Tab title is required")); 

Kết quả được hiển thị như:

<span class="field-validation-error">&lt;span class=&quot;negative&quot;&gt;URL is Required&lt;/span&gt;&lt;br class=&quot;hid&quot; /&gt;</span> 

này không sử dụng phải là trường hợp với phiên bản beta trước đó của họ và tôi không chắc chắn phương pháp gì để mất ở đây.

Cảm ơn Nick

Trả lời

12

Có một cách khác để thực hiện điều đó, mà không phải tạo tiện ích mở rộng của riêng bạn.

Nói ví dụ, chúng tôi đã điều sau đây trong một trong các bộ điều khiển của chúng tôi:

ModelState.AddModelError("Name", "<b>Please Use a Valid Person Name</b>"); 

Sau đó chúng tôi có thể làm như sau theo quan điểm của chúng tôi:

@if(Html.ValidationMessageFor(x => x.Name) != null){ 
    @Html.Raw(Html.ValidationMessageFor(x => x.Name).ToString()) 
} 

sẽ ngăn chặn được thông báo lỗi của '<b>Please Use a Valid Person Name</b>' từ đang được mã hóa.

+1

Tôi không biết nếu điều này làm việc cùng một lúc, nhưng tôi có thể xác nhận rằng nó không có trong MVC 3. –

+13

@ Html.Raw (HttpUtility.HtmlDecode (Html.ValidationMessageFor (x => x.Name) .ToHtmlString())); – George

1

Tạo phương pháp khuyến nông của riêng bạn mà bắt chước Html.VallidationMessage ...?

Tôi phải làm điều gì đó tương tự vì công cụ xác thực MVC được tích hợp sẵn (ModelState, ValidationMessage v.v.) không phục vụ cho các trang có nhiều hơn một biểu mẫu trên một trang.

+0

bạn nói đúng - tôi đã cập nhật mục sai. Cả hai đều liên quan đến mã hóa của html - tôi vừa cập nhật sai. Tôi đã xóa bản cập nhật. cảm ơn vì đã chú ý. – IEnumerator

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