2010-12-12 34 views
10

Trước hết, tôi đang sử dụng MVC 3 RC1 với công cụ xem Dao cạo. Tôi đã có một phần mở rộng HTML helper mà trông như thế này:Mã hóa HTML cho phương pháp mở rộng HtmlHelper

public static string TabbedMenuItem(this HtmlHelper htmlHelper, string text, string actionName, string controllerName) { 
    StringBuilder builder = new StringBuilder(); 
    builder.Append("<li>"); 

    builder.Append(text); 

    builder.Append("</li>"); 
    return builder.ToString(); 
} 

Và trên quan điểm nó được gọi là như thế này:

@Html.TabbedMenuItem("Home", "Index", "Home") 

Vấn đề tôi đã có là MVC là tự động HTML mã hóa các kết quả trong chế độ xem vì vậy tất cả những gì tôi nhận được là phiên bản được mã hóa của chuỗi:

<li>Home</li> 

Có ai biết cách tắt mã hóa tự động cho tiện ích mở rộng trợ giúp HTML của bạn không?

Cảm ơn trước Andy

+1

Để tham khảo trong tương lai, MVC có một lớp System.Web.Mvc.TagBuilder mà bạn có thể muốn xem xét. Nó không phủ nhận nhu cầu trả lại IHtmlString, nhưng nó đi kèm với nhiều chức năng hơn StringBuilder cho loại nhiệm vụ này. –

Trả lời

21
public static IHtmlString TabbedMenuItem(this HtmlHelper htmlHelper, string text, string actionName, string controllerName) 
{ 
    StringBuilder builder = new StringBuilder(); 
    builder.Append("<li>"); 

    builder.Append(text); 

    builder.Append("</li>"); 
    return MvcHtmlString.Create(builder.ToString()); 
} 

giá trị sử dụng trở lại IHtmlString. Hy vọng sự trợ giúp này.

+0

Hoạt động hoàn hảo. Cảm ơn takepara nhiều đánh giá cao. – AndyM

+0

Điều này có nên là 'MvcHtmlString' hoặc không còn là trường hợp trong ASP.NET MVC 3 không? – ehdv

+1

@ehdv câu hỏi hay; Tôi googled nó và tìm thấy (điều này) [http://stackoverflow.com/a/3382908/295686] (HtmlString được ưa thích trong .NET 4+) – mlhDev

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