0

我想问MVC3+;从控制器以模型或视图包的形式传递的数据是默认编码的数据还是我必须编码的数据?

4

2 回答 2

1

MVC 主动尝试对值进行编码以防止跨站点脚本。

 @* This is HTML Encoded *@
 @Model.Value 

 @* This value is not encoded *@
 @Html.Raw(Model.Value)  

 @* The URL gets URL Encoded *@
 <a href="@Url" />

这个剃刀代码

 @ {
  bool disabled = false;
  bool readonly = true; 
  string className = null;
 }
 <input type="text" disabled="@disabled" readonly="@readonly" class="@className" />

实际上产生这个输出

 <input type="text" readonly="readonly" />

值为nullfalse会导致 Razor 视图引擎根本不呈现属性。

如果您确实想要这样的 data-soldout="false"那么您需要执行以下操作:

 data-soldout="@Html.Raw(isSoldout)" or data-soldout="@isSoldout.ToString()"
于 2013-09-09T04:33:00.780 回答
1

你的意思是HTML编码?他们不是,不。

这意味着如果您有一个包含该值的字符串属性,"<b>some text</b>"那么属性内容就是这样。

但是,如果您尝试将此输出打印到视图,@MyProperty则默认情况下,该字符串将由MVC 进行 HTML 编码。所以输出会变成&lt;some text&gt;.

您可以使用@Html.Raw(MyProperty).

请记住,“编码”一词有点含糊。尝试具体说明您所指的编码。

于 2013-09-09T04:34:45.683 回答