像Html.DropDownList()这样的ASP.NET MVC辅助方法是否对输出HTML进行编码?

时间:2009-04-14 17:18:56

标签: asp.net-mvc html-helper

我只是想知道在使用像Html.DropDownList()这样的HTML帮助程序时是否需要编写输出值的编码。

如果是这样,我该如何编码呢?如果我手动构建下拉列表,则很容易做到 - 只需用“Html.Encode()”包装每个值。但是,在使用HTML帮助程序时,我不知道如何执行此操作。

2 个答案:

答案 0 :(得分:4)

看起来这些值是自动编码的,所以没有理由自己编写。以下是您可以从codeplex(在SelectExtensions.cs中)下载的实际ASP.NET MVC 1.0源代码的片段:

    private static string ListItemToOption(SelectListItem item) {
        TagBuilder builder = new TagBuilder("option") {
            InnerHtml = HttpUtility.HtmlEncode(item.Text)
        };
        if (item.Value != null) {
            builder.Attributes["value"] = item.Value;
        }
        if (item.Selected) {
            builder.Attributes["selected"] = "selected";
        }
        return builder.ToString(TagRenderMode.Normal);
    }

答案 1 :(得分:2)

他们这样做。

如果你想自己做,那就是Html.Encode()Html.AttributeEncode(),具体取决于您编码的HTML中的位置。