ASP.NET MVC3 ViewBag清理字符串
ASP .NET MVC3 ViewBag sanitizing string
因此,我需要将视图中基于数据库数据的字符串数组传递给JavaScript函数。所以我在控制器中有这样的代码:
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;
现在,我不太明白为什么我们同时有Blob文件字段和Blob文件集合,但这不是重点。重点是,调试表明我准确地得到了我想要的字符串(形式为["25","21","61","59"](。
但在运行JavaScript时,我收到了一个令人困惑的错误"Unexpected character&",在Chrome中查看了一点源代码后,我了解到字符串是这样的:
[ "25", "21", "61", "59"]
因此,我的假设是ViewBag正在清除它在HTML中传递给显示的字符串,但显然这不是我现在关心的问题。我的假设正确吗?是否有其他方法将此信息传递给视图?有没有一种方法可以在之后将字符串强制返回到引号中?
当您在视图中输出ViewBag的内容时,问题最有可能出现。默认情况下,Html助手会对输出进行消毒,以帮助防止注入攻击。
当在视图中输出值时,您想要的是:@Html.Raw(ViewBag.TopSixList(
由于程序员几乎不使用MVC3,谷歌也为Asp-core 显示了此页面
在ASP.Net Core中更改此行:
ViewBag.TopSixList = top_six_string;
至
ViewBag.TopSixList = new HtmlString(top_six_string);
并使用Microsoft.AspNetCore.Html添加如果HtmlString不可访问。
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- ng打开空字符串
- 正则表达式在字符串中找到base64
- 如何将字符串值从php页面发送到java脚本页面
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 对id以某个字符串开头的元素进行计数
- Javascript逻辑运算符和字符串/数字
- 反向字符串比较
- 如何有效地将游戏数据存储在URL查询字符串中
- 可变大小的JavaScript字符串如何成为基元类型
- 将DOM节点值与字符串Javascript进行比较
- 如何在 Javascript 中将变量的值从字符串转换为整数
- 本地存储中的字符串到字节数组转换
- JavaScript按钮/输入/函数,字符串反转
- 从查询字符串参数推断出正确的数据类型
- 访问字符串存储在一个ViewBag ajax成功
- ASP.NET MVC3 ViewBag清理字符串