ASP.NET MVC3 ViewBag清理字符串
本文关键字:字符串 ViewBag NET MVC3 ASP | 更新日期: 2023-09-27 18:01:15
因此,我需要将视图中基于数据库数据的字符串数组传递给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不可访问。