2009-01-08 25 views
39

Bất cứ khi nào tôi sử dụng Html.ActionLink nó luôn luôn Html mã hóa chuỗi hiển thị của tôi. Ví dụ tôi muốn liên kết của tôi trông như thế này:Làm cách nào để bỏ qua chế độ mã hóa HTML khi sử dụng Html.ActionLink trong Mvc?

<a href="/posts/422/My-Post-Title-Here">More&hellip;</a> 

nó ra như thế này: More&hellip;

& hellip là "..." trong trường hợp bạn đang tự hỏi.

Tuy nhiên, liên kết hành động sẽ xuất ra văn bản thực tế "& hellip;" dưới dạng văn bản liên kết. Tôi có cùng một vấn đề với nếu tôi muốn kết quả này:

<a href="/posts/422/My-Post-Title-Here"><em>My-Post-Title-Here</em></a> 

tôi gió lên với: <em>My-Post-Title-Here</em>

ý tưởng Bất kỳ làm thế nào để làm điều này?

Trả lời

76

Dường như ActionLink luôn sử dụng các cuộc gọi HttpUtility.Encode trên văn bản liên kết. Bạn có thể sử dụng UrlHelper để tạo ra href và tự xây dựng thẻ anchor.

<a href='@Url.Action("Posts", ...)'>More&hellip;</a> 

Hoặc bạn có thể "giải mã" chuỗi bạn chuyển đến ActionLink. Xây dựng liên kết trong HTML có vẻ hơi dễ đọc hơn (với tôi) - đặc biệt là trong Razor. Dưới đây là tương đương để so sánh.

@Html.ActionLink(HttpUtility.HtmlDecode("More&hellip;"), "Posts", ...) 
+0

@tvanfosson gần 4 năm sau ... là này vẫn là phương pháp tốt nhất để nhồi các ký tự đặc biệt như ký hiệu và dấu, vv .. vào văn bản liên kết? –

+0

@ one.beat.consumer Tôi nghĩ vậy, nhưng có một giải pháp thay thế mà tôi đã thêm vào. Cũng được cập nhật để phản ánh cú pháp Razor. – tvanfosson

+0

@tvanfosson là một người đàn ông tốt, và kỹ lưỡng, tvan. cảm ơn. –

7

Cách khác, chỉ cần sử dụng ký tự dấu chấm lửng Unicode đơn giản \ u2026 và để MVC lo lắng về cách mã hóa nó. Trừ khi có một số lý do đặc biệt hấp dẫn bạn đặc biệt cần một tham chiếu thực thể hellip như trái ngược với một tham chiếu ký tự hoặc chỉ bao gồm ký tự như các byte UTF-8 đơn giản.

Cách khác thay thế: chỉ cần sử dụng ba dấu chấm. Dấu ba chấm (U + 2026) là một ký tự tương thích, chỉ được bao gồm trong chuyến đi khứ hồi tới mã hóa Unicode trước. Nó giúp bạn rất ít so với các dấu chấm đơn giản. .

+1

Dấu ba chấm có ý nghĩa ngữ nghĩa hơn ba giai đoạn. Nó cũng thường được kết xuất tốt hơn. – bdesham

4

Giải mã nó trước khi đi qua giá trị trong Chỉ cần có cùng vấn đề này (nhân vật khác nhau) và nó hoạt động tốt:

Ví dụ:

@Html.ActionLink(HttpUtility.HtmlDecode(_("&amp;")), "Index", "Home") 

Annoying dù

10

Câu trả lời được đưa ra bởi Sam thực sự là chính xác và tôi đã sử dụng nó trong giải pháp của mình vì vậy tôi đã tự mình thử nó. Bạn có thể muốn loại bỏ các dấu ngoặc thêm để nó trở thành một cái gì đó như thế này:

@Html.ActionLink(HttpUtility.HtmlDecode("&amp;"), "Index", "Home") 
7

Check-out này:

<p>Some text @(new HtmlString(stringToPaste)) </p> 
Các vấn đề liên quan