2011-01-20 9 views
6

tôi có ASP.NET 4.0 dựa trên CMS, nơi tôi sử dụng TinyMCE (3.4) thông qua jQuery để chỉnh sửa một Textbox.ASP.Net 4.0 với TinyMCE và XML Encoding mã hóa lại Nội dung trên Postback

Ngoài việc này tôi còn có một số hộp văn bản khác. Ngoài ra còn có một Danh sách thả xuống khác trên Trang, kiểm soát Loại nội dung. Điều khiển này đã bật Tự động khởi động và đặt chế độ hiển thị trên hộp văn bản liên quan đến mục được chọn.

Vì tôi muốn giữ xác nhận đăng lại trên i đã định cấu hình TinyXML để sử dụng xml cho việc tuần tự hóa nội dung (mã hóa: "xml").

Bây giờ tôi gặp sự cố, khi đăng lại từ ví dụ: Danh sách DropDown xuất hiện, mã hóa lại nội dung.

Init: "Hallo" 
1st Postback: "<p>Hallo</p>" 
2nd Postback: "<p>&lt;p&gt;Hallo&lt;/p&gt;</p>" 

tôi đã bật văn bản gốc thông qua css và điều này có vẻ là vấn đề với phương pháp Lưu của TinyMCS. Có ai có một giải pháp, làm thế nào để khắc phục vấn đề này có thể với một save_callback tùy chỉnh trên TinyMCE?

+1

Xem câu trả lời của tôi tại đây http://stackoverflow.com/a/34100978/1201322 – Ravimallya

+0

Có thể trùng lặp [tinymce nhận mã HTML khi đăng lại] (http: // stackoverflow.com/questions/5636219/tinymce-get-html-code-khi-postback) –

Trả lời

0

Bạn có nhìn vào trợ giúp cài đặt entity_encoding không?

+1

không, vì cài đặt này chỉ xác định cách thức các mã cổ được mã hóa, và vấn đề của tôi là, được mã hóa hai lần. – Christoph

+0

hmm, sau đó tôi thành thật nghĩ rằng vấn đề này không phải là một vấn đề tinymce, bạn đã kiểm tra mã phía máy chủ khác và yêu cầu/kết quả? – Thariama

+0

có. tôi kích hoạt textarea cơ bản (thông qua css) và có postback gây ra TinyMCE để viết html mã hóa kép. Postback không gọi bất kỳ phương thức codebehind nào. – Christoph

1

Có thể dữ liệu đang được tải lại vào cửa sổ tinymce sau khi được lưu không?

Khi tôi gặp phải điều này trước đây trong TinyMCE/WebForms, người ta dễ dàng cố định bằng cách giải mã các dữ liệu trước khi Populating các trường biểu mẫu và sau khi đăng lại:

TextAreaID.Text = Server.HtmlDecode (" <p> chào </p > ");

1

Tôi vừa gặp sự cố tương tự với Tinymce và Asp.NET MVC. Trong trường hợp của tôi những gì đang xảy ra là:

  1. Các mẫu được gửi và TinyMCE html mã hóa nội dung (Tôi đang sử dụng tùy chọn encoding: 'xml')
  2. ở phía máy chủ bài hành động của tôi, tôi html giải mã thẻ tôi muốn cho phép (ví dụ đơn giản: decodedHtml = model.HtmlContent.Replace("&lt;p&gt;", "<p>")). Sau đó, sau khi tiết kiệm đến cơ sở dữ liệu và vv, tôi cập nhật model.HtmlContent với html được giải mã (model.HtmlContent = decodedHtml)

nhưng vào thời điểm này các biên tập TinyMCE được hiển thị html mã hóa, tức là &lt;p&gt;test&lt;/p&gt; thay vì <p>test</p>, mặc dù tôi đã làm model.HtmlContent = decodedHtml trong hành động đăng bài của tôi. Điều thực sự xảy ra là asp.net bỏ qua giá trị trong mô hình trên postback và thay vào đó liên kết giá trị được đăng (xem tại đây http://weblog.west-wind.com/posts/2012/Apr/20/ASPNET-MVC-Postbacks-and-HtmlHelper-Controls-ignoring-Model-Changes để biết thêm chi tiết về cách hoạt động của nó).

Một khoảng cách này là trong bài viết của hành động của bạn để làm

ModelState.Remove("HtmlContent"); 

và sau đó nó sẽ ràng buộc giá trị trong mô hình quan điểm của bạn thay vì giá trị đăng.

Vì vậy, trong trường hợp của tôi, vấn đề không thực sự với tinymce nhưng với cách bài đăng biểu mẫu hoạt động trong asp.net mvc. Hy vọng điều này sẽ giúp một ai đó.