publicactionresult test()
,new student(),
new student(),
new student(),
new student(),
};viewdata[
"stuname
"] = "張三"
; viewbag.stuage = 22
;
tempdata[
"stugender
"] = "男"
;
return
view(stulist);
}
@viewdata[1.viewdata、viewbag、tempdata、model"stuname
"] //張三
@viewbag.stuname //張三
@viewbag.stuage //22
@viewdata[
"stuage
"] //22
@foreach (
var item in model as list)
@tempdata[
"stugender
"] //男
@html.action(gettempdata)
如上圖所示,我們用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這樣我們就可以從test控制器的 tempdata[「stugender」]獲得資料:actionresult gettempdata()
//檢視**:
@viewbag.msg
下面是一張請求的流程圖:
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...