2012-06-15 23 views
7

Sau khi chuyển sang .net 4.0, một số mã javascript từ một sự cố GridView bên thứ ba. Nó đã có một cái gì đó để làm với HtmlEncode and UrlEncode now encode single quotation marksTôi có thể dừng .net 4.0 từ mã hóa dấu nháy đơn không?

Vì vậy, trước khi một số mã trên trang được chèn như thế này: DataItem.GetMember('Id').Value

và bây giờ nó như thế này: DataItem.GetMember('Id').Value

Các GridView thực hiện một eval trên dòng đó và bị lỗi ngay bây giờ. Tôi không thể thay đổi mã javascript trong GridView đó.

Có cách nào để giải quyết vấn đề này, mà không cần lùi lại như thế này?

<pages controlRenderingCompatibilityVersion="3.5" /> 

EDIT: các trang controlRenderingCompatiblityVersion không sửa lỗi này cũng có. Dấu nháy đơn vẫn được mã hóa.

+0

bạn đang sử dụng webforms hoặc MVC? –

+0

Vấn đề thú vị. "eval" là ác, vì vậy nó không may bạn đang mắc kẹt với nó. :( – Almo

+0

Tôi đang sử dụng biểu mẫu web –

Trả lời

1

Từ những gì tôi đã đọc, đó là tính năng bảo mật và Microsoft là mum về việc thay đổi nó. Công việc duy nhất xung quanh tôi đã thấy là bạn sẽ cần phải tạo một lớp mã hóa tùy chỉnh. Bạn có thể turn-off thuộc tính mã hóa sử dụng này:

public class HtmlAttributeEncodingQuote : System.Web.Util.HttpEncoder 
{ 
    protected override void HtmlAttributeEncode(string value, System.IO.TextWriter output) 
    { 
     output.Write(value); 
    } 
} 

Sau đó thêm video này vào web.config dưới system.web:

<httpRuntime encoderType="HtmlAttributeEncodingQuote"/> 
Các vấn đề liên quan