c# - ASP .NET MVC3 ViewBag 清理字符串

标签 c# javascript html asp.net-mvc

因此,我需要根据数据库中的数据,将我 View 中的一个字符串数组传递给 JavaScript 函数。所以我在 Controller 中有这段代码:

        string top_six_string = "[";
        foreach (ObjectModel om in collection)
        {
            myProject.Models.BlobFile file = null;
            if (om.BlobFile != null)
            {
                file = om.BlobFile;
            }
            else if (om.BlobFiles.Count != 0) 
            {
                file = om.BlobFiles.First();
            }
            if (file != null)
            {
                top_six_string += " \"" + file.BlobFileID + "\",";
            }
        }
        top_six_string = top_six_string.TrimEnd(',');
        top_six_string += "]";
        ViewBag.TopSixList = top_six_string;

现在,我不太明白为什么我们同时拥有 BlobFile 字段和 BlobFiles 集合,但这不是重点。关键是,调试显示我准确地获取了我想要的字符串(形式为 ["25"、"21"、"61"、"59"])。

但是在运行 JavaScript 时,我遇到了令人困惑的错误“意外的字符 &”,并且在 Chrome 中查看了一点源代码让我了解到输出的字符串看起来像这样:

[ "25", "21", "61", "59"]

所以我的假设是 ViewBag 正在清理为 HTML 中的 display 传递的字符串,但显然这不是我现在关心的问题。我的假设是否正确?是否有另一种方式来传递 View 此信息?有没有办法可以在之后将字符串强制转换回引号?

最佳答案

当您在 View 中输出 ViewBag 的内容时,最有可能出现问题。默认情况下,Html 帮助程序会清理输出以帮助防止注入(inject)攻击。

在你的 View 中输出值时,你想要的是这样的:@Html.Raw(ViewBag.TopSixList)

关于c# - ASP .NET MVC3 ViewBag 清理字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6598668/

相关文章:

html - 如何将图像与下面的文字对齐?

javascript - 在javascript中访问 "private"变量

javascript - 你可以使用<c :otherwise> with <c:if> or only with <c:when>?

c# - 在 C# 中,如何从字典中获取键列表?

c# - 获取具有多个句点的文件的文件扩展名

javascript - .html() jQuery 函数返回 NaN

javascript - 将 css 应用于使用 Vue.js 动态创建的表格行

javascript - 如何设置表单 Action 以打开特定大小的新窗口?

c# - 干燥的 XML 注释

c# - 处理 ASP.net 中的表单例份验证超时