Dies ist eine hervorragende Möglichkeit, den Quellcode zu sehen, der für ASP.NET (http://aspnetwebstack.codeplex.com) verfügbar ist.
bei HtmlHelper.cs suchen, ist dies der Code für Html.Raw()
:
public IHtmlString Raw(string value)
{
return new HtmlString(value);
}
public IHtmlString Raw(object value)
{
return new HtmlString(value == null ? null : value.ToString());
}
Und das ist der Code für die MvcHtmlString Klasse:
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);
}
}
}
Der wichtigste Unterschied besteht darin, dass Html.Raw()
jeder akzeptiert Objekt, während MvcHtmlString.Create()
nur Zeichenfolgen akzeptiert. Außerdem gibt Html.Raw()
eine Schnittstelle zurück, während die Create-Methode ein MvcHtmlString-Objekt zurückgibt. Zuletzt beschäftigt sich die Create mit null anders.
Vielen Dank für diese Antwort! Aber welche davon sollte bevorzugt werden? – Julian
@Julian: Das hängt davon ab, wo der Code ist und wozu du leicht Zugang hast. Normalerweise benutze ich weder, noch benutze ich 'new HtmlString()'. – Guffa
@Julian Wie Guffa sagte: Es hängt davon ab, wo dein Code ist. In einer Ansicht bevorzuge ich Html.Raw, aber hauptsächlich, weil das beim Lesen des Codes ästhetisch angenehm ist (kein wirklich gutes Argument, ich weiß). –