我有一个Viewbag。我在Action结果方法中从服务器端填充了viewbag值。我需要在Js文件中访问此Viewbag值。我已正确访问* .cshl页面中的Viewbag。下面显示了我的示例代码
Var objMode = '@ViewBag.Mode';
//写在* .cshtml页面。
但我需要像* .js文件中的上述语法一样访问此值。
谢谢, Nirav Parikh
答案 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>
现在您可以在脚本文件中引用它。