我有一個Viewbag。我已經在Action結果方法中從服務器端填充了viewbag值。我需要在Js文件中訪問這個Viewbag值。我已正確訪問* .cshl頁面中的Viewbag。下面顯示我的示例代碼,在JS文件中訪問ViewBag - Asp.net MVC
Var objMode = '@ViewBag.Mode';
//寫在* .cshtml頁面。
但我需要像* .js文件中的上述語法那樣訪問這個值。
感謝, Nirav Parikh的
我有一個Viewbag。我已經在Action結果方法中從服務器端填充了viewbag值。我需要在Js文件中訪問這個Viewbag值。我已正確訪問* .cshl頁面中的Viewbag。下面顯示我的示例代碼,在JS文件中訪問ViewBag - Asp.net MVC
Var objMode = '@ViewBag.Mode';
//寫在* .cshtml頁面。
但我需要像* .js文件中的上述語法那樣訪問這個值。
感謝, Nirav Parikh的
你不能。您可以在隱藏輸入寫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
}
您不能在包含的腳本文件中引用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>
現在你可以在你的腳本文件中引用它。