我有一个Viewbag。我已经在Action结果方法中从服务器端填充了viewbag值。我需要在Js文件中访问这个Viewbag值。我已正确访问* .cshl页面中的Viewbag。下面显示我的示例代码,在JS文件中访问ViewBag - Asp.net MVC
Var objMode = '@ViewBag.Mode';
//写在* .cshtml页面。
但我需要像* .js文件中的上述语法那样访问这个值。
感谢, Nirav Parikh的
我有一个Viewbag。我已经在Action结果方法中从服务器端填充了viewbag值。我需要在Js文件中访问这个Viewbag值。我已正确访问* .cshl页面中的Viewbag。下面显示我的示例代码,在JS文件中访问ViewBag - Asp.net MVC
Var objMode = '@ViewBag.Mode';
//写在* .cshtml页面。
但我需要像* .js文件中的上述语法那样访问这个值。
感谢, Nirav Parikh的
你不能。您可以在隐藏输入写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或其他上下文项目,因为这些项目是作为静态文件提供的,并且未在服务器上处理(如果需要,可以通过为View提供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>
现在你可以在你的脚本文件中引用它。