Với Razor View Engine, bất cứ lúc nào bạn xuất một chuỗi trực tiếp vào trang, nó được mã hóa HTML. ví dụ:Với Razor View Engine mới, HtmlHelpers của tôi có nên trả về chuỗi hoặc IHtmlString không?
@"<p>Hello World</p>"
thực sự sẽ nhận được đầu ra cho các trang như:
<p>Hello World </p>
Trong đó sẽ hiển thị trong trình duyệt như:
<p> Hello World </p >
Đây là vấn đề mặc dù, khi tạo người trợ giúp Html, cho đến bây giờ, với công cụ xem aspx cũ tôi sẽ chỉ retu rn một chuỗi và xuất ra trình duyệt:
<%= Html.MyCoolHelperMethod(); %>
Vì vậy, câu hỏi của tôi về cơ bản là vậy. Tôi làm điều này:
public static IHtmlString MyCoolHelperMethod(this HtmlHelper helper)
{
return new helper.Raw("<p>Hello World</p>");
}
trong trường hợp này tôi chỉ có thể làm điều này trong cshtml tôi:
@Html.MyCoolHelperMethod();
hay tôi làm điều này:
public static string MyCoolHelperMethod(this HtmlHelper helper)
{
return "<p>Hello World</p>";
}
trong trường hợp mà tôi cần phải thực hiện công việc trong cshtml của tôi:
@Html.Raw(Html.MyCoolHelperMethod());
Rõ ràng là lần đầu tiên phê duyệt ach làm cho xem nhìn sạch hơn rất nhiều, nhưng tôi chỉ tự hỏi nếu mô hình phổ biến là trong thực tế cho người giúp đỡ để trở về một IHtmlString
và tôi đã làm điều đó sai trong quá khứ.
Xem xét điều này: http://stackoverflow.com/questions/2293357/what-is-an-mvchtmlstring-and-when-should-i-use-it Bạn nên trả lại IHtmlString – LukLed