这是一个很好的机会来看看ASP.NET(
http://aspnetwebstack.codeplex.com)可用的源代码。
看看HtmlHelper.cs,这是Html.Raw()的代码:
public IHtmlString Raw(string value)
{
return new HtmlString(value);
}
public IHtmlString Raw(object value)
{
return new HtmlString(value == null ? null : value.ToString());
}
这是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);
}
}
}
最显着的区别是Html.Raw()接受任何对象,而MvcHtmlString.Create()只接受字符串。此外,Html.Raw()返回一个接口,而Create方法返回一个MvcHtmlString对象。最后,创建处理为null。