1

我有这样的部分观点:

@model Dictionary<int, string>

<select style="height: 17px;">
  <option value=''></option>
  @foreach (KeyValuePair<int, string> value in Model)
  {
    <option value='@Html.Encode(value.Key.ToString())'>
      @Html.Encode(value.Value)
    </option>
  }
</select>


工作正常,但如果值中有例如德语变音符号,则显示错误:在此处输入图像描述

所以不是ö&#246;.

如果我使用它@value.Value而不是@Html.Encode(value.Value)它,但出于安全原因,我想对数据库中的值进行 Html.Encode。

4

1 回答 1

0

您不需要手动操作,Html.Encode因为 Razor 通过这种方式保护。这意味着 Razor HTML 会使用@sing 对您写入输出的每个字符串进行编码。

所以你可以放心地写@value.Value.

顺便说一句,您看到的效果是双重编码的情况,因为您首先使用 对文本进行编码Html.Encode,然后当您使用@Html.Encode(value.Value).

于 2013-07-05T11:29:00.163 回答