天天看點

MVC ViewData和ViewBag

      視圖資料可以通過viewbag屬性通路,它主要是為了從controller到view進行傳值用的,類似有所使用的viewdata[] 字典類。對于viewbag是如此的強大,意味着你能動态的set/get 值,增加任何數量的的額外字段而不需要強類型的檢測。如:

controller

?

<code>public</code>

<code>actionresult index()</code>

<code></code><code>{</code>

<code></code><code>list&lt;</code><code>string</code><code>&gt; colors =</code><code>new</code>

<code>list&lt;</code><code>string</code><code>&gt;();</code>

<code></code><code>colors.add(</code><code>"red"</code><code>);</code>

<code></code><code>colors.add(</code><code>"green"</code><code>);</code>

<code></code><code>colors.add(</code><code>"blue"</code><code>);</code>

<code></code>

<code></code><code>viewdata[</code><code>"listcolors"</code><code>] = colors;</code>

<code></code><code>viewdata[</code><code>"datenow"</code><code>] = datetime.now;</code>

<code></code><code>viewdata[</code><code>"name"</code><code>] =</code><code>"hajan"</code><code>;</code>

<code></code><code>viewdata[</code><code>"age"</code><code>] = 25;</code>

<code></code><code>return</code>

<code>view();</code>

<code></code><code>}</code>

1

2

3

4

5

6

7

8

9

10

11

12

13

<code>viewbag.listcolors = colors;</code><code>//colors is list</code>

<code></code><code>viewbag.datenow = datetime.now;</code>

<code></code><code>viewbag.name =</code><code>"hajan"</code><code>;</code>

<code></code><code>viewbag.age = 25;</code>

<code>}</code>

 你和上面的對比 你看見了不同嗎?

view

對應前台視圖:

&lt;p&gt;

my name is

&lt;b&gt;@viewdata["name"]

&lt;/b&gt;,

&lt;b&gt;@viewdata["age"]

&lt;/b&gt;years old.

&lt;br

/&gt;

i like the following colors:

&lt;/p&gt;

&lt;ul

id="colors"&gt;

@foreach (var

color in viewdata["listcolors"]

as list&lt;string&gt;)

{

&lt;li&gt;&lt;font

color="@color"&gt;@color

&lt;/font&gt;&lt;/li&gt;

}

&lt;/ul&gt;

@viewdata["datenow"]

&lt;b&gt;@viewbag.name&lt;/b&gt;,

&lt;b&gt;@viewbag.age&lt;/b&gt; years old.

@foreach (var color

in viewbag.listcolors)

color="@color"&gt;@color&lt;/font&gt;

&lt;/li&gt;

@viewbag.datenow

效果圖:

MVC ViewData和ViewBag

viewbag、viewdata 和 tempdata 的差別:

viewdata 和 tempdata 都可以傳遞弱類型資料,差別如下:

viewdata 隻在目前 action 中有效,生命周期和 view 相同;

tempdata 的資料至多隻能經過一次controller傳遞,并且每個元素至多隻能被通路一次,通路以後,自動被删除。

tempdata 一般用于臨時的緩存内容或抛出錯誤頁面時傳遞錯誤資訊,可以将tempdata 在使用之前存儲到相應的 viewdata 中以備循環使用。

繼續閱讀