2011-05-31 76 views

回答

38

您無法在javascript中的ViewBag中存儲值。 ViewBag是一個服務器端概念,只存在於服務器上。 Javascript在客戶端運行。至於從ViewBag一些數據存儲到一個javascript變量而言,你可以使用以下命令:

<script type="text/javascript"> 
    var foo = @Html.Raw(Json.Encode(ViewBag.FooBar)) 
</script> 

現在,這是說,我總是建議人們反對ASP.NET MVC使用ViewBag/ViewData的。我建議使用強類型的視圖和視圖模型。所以你的代碼看起來像這樣:

@model MyViewModel 
<script type="text/javascript"> 
    var foo = @Html.Raw(Json.Encode(Model)) 
</script> 
+1

@Agzam,你想訪問這個對象?在JavaScript?那很糟。這意味着你的觀點會從某些部分獲取信息。觀點不應該拉動信息。他們應該使用從控制器操作中傳遞給他們的信息作爲視圖模型。因此,請隨意定義一個視圖模型,一個控制器動作,它將從存儲的任何地方(應用程序範圍)獲取信息,並將此視圖模型傳遞給視圖。然後在這個視圖中,你所要做的就是使用視圖模型=>這就是所有視圖應該做的 – 2011-05-31 20:14:08

+0

現在,如果你想傳遞存儲在一個JavaScript變量中的一些信息到你的服務器,你有兩種可能性:AJAX,HTML表單, window.location.href,錨點,... – 2011-05-31 20:16:33

+0

@DarinDimitrov - 我只是學習從Web窗體切換到MVC,最近可能使用了大約20個答案,這一個definetly節省了我很多時間 – 2012-12-08 04:44:18

3

你不能。 ViewBag是一個服務器端的東西,Javascript運行在客戶端。