MVC4剃刀视图.鉴于字符串background
Image设置如下:
backgroundImage = string.Format("background: url('{0}') top left no-repeat;",project.MainImage);
为什么这样呢
<div class="spotlight slide teaser-text" id="@slideId" style="@Html.Raw(backgroundImage)">
生产
<div class="spotlight slide teaser-text" id="spotlight-0" style="background: url('/media/215/spotlight01.jpg') top left no-repeat;">
Html.Raw,新的MvcHtmlString和MvcHtmlString.Create表现得同样如此.
我希望它能产生
<div class="spotlight slide teaser-text" id="spotlight-0" style="background: url('/media/215/spotlight01.jpg') top left no-repeat;">
(注意引号).
解决方法
我看了一下包含这个标记的剃刀模板的编译DLL.据我所知,问题是这个.
Html.Raw将字符串转换为HtmlString. HttpUtility.HtmlEncode将IHtmlString实例与普通字符串区别对待,因为它不应用Html编码.
this.WriteAttribute(...)
使用适合生成属性的数据.部分数据是通过调用Html.Raw生成的HtmlString.另一部分是一个标志,表示该值不是文字.
由于not-literal标志状态,WriteAttribute方法最终调用HtmlEncode.但它不是在HtmlString上调用它,而是在该对象的字符串值上调用它.因此,您最终会在输出中使用HTML编码值.
this.Write(...)
原文地址:https://www.jb51.cc/aspnet/248327.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。