Questa è un'eccellente opportunità per consultare il codice sorgente disponibile per ASP.NET (http://aspnetwebstack.codeplex.com).
Guardando HtmlHelper.cs, questo è il codice per Html.Raw()
:
public IHtmlString Raw(string value)
{
return new HtmlString(value);
}
public IHtmlString Raw(object value)
{
return new HtmlString(value == null ? null : value.ToString());
}
e questo è il codice per la classe 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);
}
}
}
La differenza più significativa è che accetta qualsiasi Html.Raw()
oggetto, mentre MvcHtmlString.Create()
accetta solo stringhe. Inoltre, Html.Raw()
restituisce un'interfaccia, mentre il metodo Create restituisce un oggetto MvcHtmlString. Infine, la creazione di offerte con null in modo diverso.
fonte
2012-04-26 10:04:32
Grazie per la risposta! Ma quale di questi dovrebbe essere preferito? – Julian
@ Julian: Dipende da dove si trova il codice e da cosa è facilmente accessibile. Io di solito non uso nessuno dei due, uso solo 'new HtmlString()'. – Guffa
@ Julian Come Guffa ha detto: Dipende da dove si trova il tuo codice. In una vista preferisco Html.Raw, ma principalmente perché è esteticamente gradevole quando leggo il codice (non è un argomento molto valido, lo so). –