MvcHtmlString.Create()和Html.Raw之间的差异()(Difference

2019-06-23 23:25发布

我创建一个MVC项目。 使用MVC 4和剃刀。 建设一些网页后,我在想:是什么区别

MvcHtmlString.Create()

Html.Raw()

将是很好,如果你能帮助我在这里要理解这一点。

提前致谢!

Answer 1:

这是为了看看源代码,这是提供给我们用于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()返回一个接口,而创建方法返回一个MvcHtmlString对象。 最后,不同的创建空交易。



Answer 2:

没有实际的区别。

MvcHtmlString.Create创建的实例MvcHtmlString ,而Html.Raw方法创建的实例HtmlString ,但MvcHtmlString刚刚从继承HtmlString ,所以他们的工作是相同的。



文章来源: Difference between MvcHtmlString.Create() and Html.Raw()