我正在创建一个MVC项目。使用MVC 4和Razor。构建了一些页面之后,我想知道:两者之间有什么区别
MvcHtmlString.Create()
和
Html.Raw()
如果您能在这里帮助我理解这一点,那就太好了。
提前致谢!
最佳答案
这是查看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()
返回一个接口(interface),而Create方法返回一个MvcHtmlString对象。最后,Create处理null的方式有所不同。
关于asp.net-mvc - MvcHtmlString.Create()和Html.Raw()之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10331019/