2013-03-26 164 views
4

我有一个Viewbag。我已经在Action结果方法中从服务器端填充了viewbag值。我需要在Js文件中访问这个Viewbag值。我已正确访问* .cshl页面中的Viewbag。下面显示我的示例代码,在JS文件中访问ViewBag - Asp.net MVC

Var objMode = '@ViewBag.Mode'; //写在* .cshtml页面。

但我需要像* .js文件中的上述语法那样访问这个值。

感谢, Nirav Parikh的

回答

7

你不能。您可以在隐藏输入写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 
} 
4

您不能在包含的脚本文件中引用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> 

现在你可以在你的脚本文件中引用它。