2013-03-26 104 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> 

現在你可以在你的腳本文件中引用它。