我想问一下MVC3 +;从控制器以模型或视图包的形式传递的数据是默认编码的数据,或者我必须?
答案 0 :(得分: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" />
此Razor代码
@ {
bool disabled = false;
bool readonly = true;
string className = null;
}
<input type="text" disabled="@disabled" readonly="@readonly" class="@className" />
实际产生此输出
<input type="text" readonly="readonly" />
值 null 或 false 会导致Razor视图引擎根本不呈现该属性。
如果您确实想要这样的 data-soldout =“false”,那么您需要这样做:
data-soldout="@Html.Raw(isSoldout)" or data-soldout="@isSoldout.ToString()"
答案 1 :(得分:1)
你的意思是HTML编码?他们不是,不。
这意味着如果你有一个包含值"<b>some text</b>"
的字符串属性,那么属性内容正是如此。
但是,如果您尝试使用@MyProperty
将此输出打印到视图,则默认情况下,字符串将由MVC进行HTML编码。因此输出将变为<some text>
。
您可以使用@Html.Raw(MyProperty)
转义此内容。
请记住,“编码”一词有点含糊不清。尝试具体说明您所指的编码。