加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-4 – @ Html.Raw坚持编码引号

发布时间:2020-12-16 04:27:10 所属栏目:asp.Net 来源:网络整理
导读: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(backgrou
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(&#39;/media/215/spotlight01.jpg&#39;) 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(...)

这不会遇到同样的问题.所以这对我来说似乎是一个错误(至少如果我已经准确地追踪了它).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读