访问JS文件中的ViewBag - Asp.net MVC

时间:2013-03-26 11:43:48

标签: javascript asp.net-mvc viewbag

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

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

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

谢谢, Nirav Parikh

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:4)

您无法在包含的脚本文件中引用ViewBag或其他上下文项,因为它们作为静态文件提供,而不是在服务器上处理(如果需要,可以通过提供内容类型为JavaScript的View来解决此问题)。

您需要将视图中的值作为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>

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