28

我正在创建一个 MVC 项目。使用 MVC 4 和 Razor。在构建了一些页面之后,我想知道:两者有什么区别

MvcHtmlString.Create()

Html.Raw()

如果您能在这里帮助我理解这一点,那就太好了。

提前致谢!

4

2 回答 2

24

这是查看可用于 ASP.NET ( https://github.com/aspnet/AspNetWebStack/ )的源代码的绝佳机会。

查看 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 对象。最后, Create 以不同的方式处理 null。

于 2012-04-26T10:04:32.537 回答
6

没有实际区别。

MvcHtmlString.Create创建 的实例,MvcHtmlStringHtml.Raw方法创建 的实例HtmlString,但MvcHtmlString只是继承自HtmlString,因此它们的工作方式相同。

于 2012-04-26T10:03:37.800 回答