Đây là cơ hội tuyệt vời để xem mã nguồn có sẵn cho chúng tôi cho ASP.NET (http://aspnetwebstack.codeplex.com).
Nhìn vào HtmlHelper.cs, đây là mã cho Html.Raw()
:
public IHtmlString Raw(string value)
{
return new HtmlString(value);
}
public IHtmlString Raw(object value)
{
return new HtmlString(value == null ? null : value.ToString());
}
Và đây là mã cho lớp MvcHtmlString:
namespace System.Web.Mvc
{
public sealed class MvcHtmlString : HtmlString
{
[SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes", Justification = "MvcHtmlString is immutable")]
public static readonly MvcHtmlString Empty = Create(String.Empty);
private readonly string _value;
public MvcHtmlString(string value)
: base(value ?? String.Empty)
{
_value = value ?? String.Empty;
}
public static MvcHtmlString Create(string value)
{
return new MvcHtmlString(value);
}
public static bool IsNullOrEmpty(MvcHtmlString value)
{
return (value == null || value._value.Length == 0);
}
}
}
Sự khác biệt lớn nhất là Html.Raw()
chấp nhận bất kỳ đối tượng, trong khi MvcHtmlString.Create()
chỉ chấp nhận chuỗi. Ngoài ra, Html.Raw()
trả về một giao diện, trong khi phương thức Tạo trả về một đối tượng MvcHtmlString. Cuối cùng, Tạo giao dịch với null khác nhau.
Nguồn
2012-04-26 10:04:32
Cảm ơn bạn đã trả lời! Nhưng cái nào trong số này nên được preffered? – Julian
@Julian: Điều đó tùy thuộc vào nơi mã và những gì bạn dễ dàng truy cập. Ususally tôi sử dụng không, tôi chỉ sử dụng 'mới HtmlString()'. – Guffa
@Julian Giống như Guffa nói: Nó phụ thuộc vào mã của bạn ở đâu. Trong một cái nhìn tôi thích Html.Raw, nhưng chủ yếu là vì đó là esthetically lòng khi đọc mã (không phải là một đối số thực sự tốt, tôi biết). –