2012-04-04 24 views
5

Tôi đang sử dụng ASP.NET và tôi có một chuỗi HTML trong cơ sở dữ liệu.Lưu trữ Html.Raw() trong một chuỗi trong Javascript, ASP.NET MVC 3

Tôi muốn chuyển html đó thành biến trên máy khách.

Nếu tôi làm điều này:

var x = '@Html.Raw(myModel.FishValue)' 

nó hoạt động tốt, bởi vì nó chủ yếu làm

var x = '<p>hello!</p>'; 

tuy nhiên nếu có dấu ngoặc kép trong html nó phá vỡ trang.

đoán ban đầu của tôi sẽ được .Replace chuỗi thô để thêm thoát để có dấu ngoặc kép, tuy nhiên cả hai .ToString().ToHtmlString() (như Html.Raw trả về một IHtmlString) không xuất trình đánh dấu tương tự như đơn giản Html.Raw().

Vì vậy, tôi không biết phải làm gì tốt nhất.

Trả lời

9

Điều gì sẽ thay thế trước khi gọi phương thức Html.Raw?

var x = '@Html.Raw(myModel.FishValue.Replace("'","\\'"))' 

UPDATE:

Có thể có ký tự thoát khác trong chuỗi đến từ các mô hình. Vì lý do đó tôi khuyên bạn nên thay thế các dấu gạch chéo đầu tiên là tốt. Tất nhiên tất cả phụ thuộc vào những gì có thể đến từ máy chủ trong mô hình của bạn.

var x = '@Html.Raw(myModel.FishValue.Replace("\\","\\\\'").Replace("'","\\'"))' 

Một đoạn mẫu đại diện cho hành vi trong javascript:

//Let's say my Model Content is > I'd Say \ is a escape character. You can't "Escape" 
 
    // YOu would have to replace ' --> \' and \ --> \\ 
 
    var stringFromServer = 'I\'d Say \\ is a escape character. You can\'t "Escape"' 
 
    alert(stringFromServer)

1

Hãy thử điều này:

var x = '@(System.Web.HttpUtility.HtmlEncode(myModel.FishValue))'; 

Nếu bạn cần để giải mã HTML trên máy khách sử dụng bên

unescape(x) 

Tôi nghĩ rằng JQuery (không chắc chắn bạn đang sử dụng hay không) xử lý các chuỗi HTML được mã hóa để bạn có thể không cần unescape().

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