我想在window
JavaScript对象中查看控制器的变量。我的意思是,在全球范围内,对于特定的View。为此,我在控制器中具有以下代码:
public async Task<IActionResult> Create()
{
ViewBag.AdvertiserOptions = await _advertiserRepository.Advertisers.ToListAsync();
ViewBag.CategorieOptions = await _categoryRepository.Categories.ToListAsync();
return View();
}
在视图上,我有以下内容(可捕获变量):
@section Scripts
{
<script>
window.ManuallySending.advertiser_options =
JSON.parse(@JsonConvert.SerializeObject(ViewBag.AdvertiserOptions));
window.ManuallySending.category_options =
JSON.parse(@JsonConvert.SerializeObject(ViewBag.CategorieOptions));
</script>
}
它给了我以下错误:
在浏览器的JS控制台中:
未捕获到的SyntaxError:意外令牌和
我正在使用newtonsoft json
图书馆。这是文档上的链接
那么,为什么会这样呢?对于我来说如何将其转换"
为普通"
的?
我已经试过了:
@section Scripts
{
<script>
window.ManuallySending.advertiser_options =
JSON.parse(@Html.Raw(JsonConvert.SerializeObject(ViewBag.AdvertiserOptions)));
window.ManuallySending.category_options =
JSON.parse(@Html.Raw(JsonConvert.SerializeObject(ViewBag.CategorieOptions)));
</script>
}
但这给了我新的错误:
VM191:1未捕获的SyntaxError:JSON中的意外令牌o在Create:127处JSON.parse()的位置1
尝试使用@Html.Raw()
您的代码应该是这样的
JSON.parse(@Html.Raw(JsonConvert.SerializeObject(ViewBag.AdvertiserOptions)));
更新:为了避免在javascript中出现语法错误,您应该添加一个单引号,如下所示
JSON.parse('@Html.Raw(JsonConvert.SerializeObject(ViewBag.AdvertiserOptions))');
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句