MVC 프로젝트를 만들고 있습니다. MVC 4와 면도기 사용하기. 일부 페이지를 구축 한 후 궁금 해서요 : 당신이 이해 여기 좀 도와 수 있다면 좋겠지MvcHtmlString.Create()와 Html.Raw()의 차이점
MvcHtmlString.Create()
및
Html.Raw()
의 차이가 무엇인지.
미리 감사드립니다.
MVC 프로젝트를 만들고 있습니다. MVC 4와 면도기 사용하기. 일부 페이지를 구축 한 후 궁금 해서요 : 당신이 이해 여기 좀 도와 수 있다면 좋겠지MvcHtmlString.Create()와 Html.Raw()의 차이점
MvcHtmlString.Create()
및
Html.Raw()
의 차이가 무엇인지.
미리 감사드립니다.
이것은 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 객체를 반환합니다. 마지막으로 Create는 null을 다르게 처리합니다.
실용적인 차이점이 없습니다. Html.Raw
방법 HtmlString
의 인스턴스를 생성하지만 단지 MvcHtmlString
HtmlString
계승하면서 MvcHtmlString.Create
는 MvcHtmlString
의 인스턴스를 생성되므로 동일한 작업.
그냥 질문 : Msdn에 대한 Html.Raw() : HTML 인코딩되지 않은 마크 업을 반환합니다./for MvcHtmlString.Create : 지정된 텍스트 값을 사용하여 HTML 인코딩 된 문자열을 만듭니다. 그래서 : encoded/not encoded HTML은 "실질적인 차이"를 만들지 않습니까? –
@ RaphaëlAlthaus : 결과는 똑같습니다. 다르게 설명되었습니다. 'IHtmlString'을 구현 한 클래스에서 문자열을 감싸는 것은'<%: %>'서버 태그를 사용하여 출력 할 때 문자열이 HTML로 인코딩되지 않도록 보호합니다. – Guffa
나는 마지막 포인트를 놓쳤다;) Thx! –
그 해답을 가져 주셔서 감사합니다! 그러나 이것들 중 어느 것을 선호해야합니까? – Julian
@Julian : 코드가 어디에 있고 쉽게 액세스 할 수 있는지에 따라 다릅니다. Ususally 나는 둘 다 사용하지 않고 단지'new HtmlString()'을 사용한다. – Guffa
@Julian Like Guffa said : 코드가 어디에 있느냐에 따라 다릅니다. 보기에서 나는 Html.Raw를 선호하지만, 주로 코드를 읽을 때 심미적으로 기쁘기 때문에 (정말 좋은 주장이 아닙니다.) 알고 있습니다. –