4

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

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

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

谢谢,尼拉夫帕里克

4

2 回答 2

8

你不能。您可以在隐藏输入中写入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
}
于 2013-03-26T11:45:48.990 回答
4

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

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

于 2013-03-26T11:46:27.663 回答