我有一个 Viewbag。我已经在 Action result 方法中从服务器端填充了该 viewbag 值。我需要在 Js 文件中访问这个 Viewbag 值。我可以在 *.cshl 页面中正确访问这个 Viewbag。下面显示了我的示例代码,
Var objMode = '@ViewBag.Mode';
//写在*.cshtml页面中。
但我需要像上面 *.js 文件中的语法一样访问这个值。
谢谢,尼拉夫帕里克
我有一个 Viewbag。我已经在 Action result 方法中从服务器端填充了该 viewbag 值。我需要在 Js 文件中访问这个 Viewbag 值。我可以在 *.cshl 页面中正确访问这个 Viewbag。下面显示了我的示例代码,
Var objMode = '@ViewBag.Mode';
//写在*.cshtml页面中。
但我需要像上面 *.js 文件中的语法一样访问这个值。
谢谢,尼拉夫帕里克
你不能。您可以在隐藏输入中写入ViewBag
值,然后从 js 文件中读取它:
<input type="hidden" value="@ViewBag.Mode" id="mode" />
JS文件:
var mode = document.getElementById('mode').value;
编辑:另一种选择:
<script src="..." type="text/javascript" onload="InitMyScript('@ViewBag.Mode')"></script>
JS文件:
function InitMyScript(mode){
//other code here
}
您不能在包含的脚本文件中引用 ViewBag 或其他上下文项,因为它们是作为静态文件提供的,而不是在服务器上处理的(如果需要,可以通过提供具有 JavaScript 内容类型的视图来解决此问题)。
您需要将值作为 JS 变量放在视图中:
<script type="text/javascript">
// the object is only required if you want a nice syntax for multiple values.
if (!window.ViewBag) window.ViewBag = {};
window.ViewBag.Mode = @Html.Raw(Json.Encode(this.ViewBag.Mode));
</script>
现在您可以在脚本文件中引用它。