gpt4 book ai didi

c# - 可以从 Javascript 文件访问 MVC ViewBag 对象吗?

转载 作者:IT王子 更新时间:2023-10-29 03:45:58 26 4
gpt4 key购买 nike

是否可以从 MVC 应用程序中的 javascript 文件执行以下操作?

$(function(){
alert(@ViewBag.someValue);
}

目前它抛出错误:

reference to undefined XML name @ViewBag

最佳答案

我认为目前没有任何方法可以做到这一点。 Razor 引擎不解析 Javascript 文件,只解析 Razor View 。但是,您可以通过在 Razor View 中设置变量来完成您想要的:

<script>
var someStringValue = '@(ViewBag.someStringValue)';
var someNumericValue = @(ViewBag.someNumericValue);
</script>
<!-- "someStringValue" and "someNumericValue" will be available in script -->
<script src="js/myscript.js"></script>

正如 Joe 在评论中指出的那样,如果其中有单引号,上面的字符串值将会中断。如果你想让它完全坚如磐石,你必须用转义的单引号替换所有的单引号。那里的问题是所有突然的斜线成为一个问题。例如,如果您的字符串是“foo\' bar”,并且您替换了单引号,结果将是“foo\\' bar”,并且您又回到了同样的问题。 (这是链式编码的古老难题。)处理此问题的最佳方法是将反斜杠和引号视为特殊字符,并确保它们全部转义:

  @{
var safeStringValue = ViewBag.someStringValue
.Replace("\\", "\\\\")
.Replace("'", "\\'");
}
var someStringValue = '@(safeStringValue)';

关于c# - 可以从 Javascript 文件访问 MVC ViewBag 对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10389649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com