Mvc學習筆記 3

2022-01-22 05:10:52 字數 2047 閱讀 3067

public

actionresult test()

,new student(),

new student(),

new student(),

new student(),

};viewdata[

"stuname

"] = "張三"

; viewbag.stuage = 22

;

tempdata[

"stugender

"] = "男"

;

return

view(stulist);

}

@viewdata[

"stuname

"] //張三

@viewbag.stuname //張三

@viewbag.stuage //22

@viewdata[

"stuage

"] //22

@foreach (

var item in model as list)

@tempdata[

"stugender

"] //男

@html.action(gettempdata)

1.viewdata、viewbag、tempdata、model

如上圖所示,我們用viewdata設定資料還是獲取資料必須使用   viewdata[「stuname」] 說明viewdata是 viewdatadictionary型別,簡而言之viewdata就是乙個鍵值對

我們又從上圖的輸出結果看到viewdata和viewbag輸出的資料是相等的,那麼從這一點我們可以看出viewdata和viewbag的資料是共享的。那麼下面我們通過反編譯工具去看看他們是如何共享的

那麼我們開啟refletor.exe,搜尋controller(注意:這裡你應該給反編譯工具新增system.web.mvc.dll,系統預設沒有),因為controller類裡的**過多,我就不一一展示,但是我們在controller類裡沒有發現viewdata還有viewbag,那麼我們就去父類裡controllerbase找,發現找到了;

我們點開viewbag可以看到:

我們從this._dynamicviewdatadictionary=new dynamicviewdatadictionary(viewdatathunk);可以看出viewbag就是從viewdata裡面那的的資料,所以viewbag和viewdata的資料是共享的。

其中:viewdata和viewbag本質上都是【viewdatadictionary】型別,並且兩者之間的資料是共享,只不過提供了不同的語法操作方式而已。

我們還有一種傳輸資料的方式就是view(stulist),如上圖所示:你的stulist資料會賦值給model,然而viewdata.model=model,所以viewdata的資料來自於viewdata.model

tempdata也是通過鍵值對的形式進行傳值,但是他的型別tempdatadictionary,他與viewdata和viewbag不同點是在服務端跨action傳值,例如:

public

actionresult gettempdata()

//檢視**:

@viewbag.msg

這樣我們就可以從test控制器的 tempdata[「stugender」]獲得資料:

下面是一張請求的流程圖:

MVC3學習筆記(四)

前幾天把 發布到伺服器了。什麼都是第一次搞,這個也不例外。經過摸索,大致過程如下 1 在iis中新增乙個虛擬目錄 2 在專案標題上右鍵 發布,上圖我是用本機抓的圖,遠端伺服器類似,僅需把localhost改為即可,應用程式 一欄需要與iis上設的虛擬目錄一致 如上發布。還有幾個小問題說明一下 1 那...

Spring3MVC 學習筆記 五

abstracturlviewcontroller 提供根據請求url 路徑直接轉化為邏輯檢視名的支援基類,即不需要功能處理,直接根據url 計算出邏輯檢視名,並選擇具體檢視進行展示 urldecode 是否進行url解碼,不指定則預設使用伺服器編碼進行解碼 如tomcat預設iso 8859 1 ...

MVC學習筆記

一,如果是虛擬伺服器的話,那得這麼配置 4.注意 將1標的規則更改為 mvc 即可 自行支援 iis6 and iis7 兩種模式 筆者注 一般的虛擬主機不支援.mvc,aspx也要檢查檔案存在 變通方法為可以將.mvc換成.ashx或.asbx 二,url的變革 post.aspx?year 19...