愛上(shang)MVC3系列~PartialView()與View()真的一樣嗎?
當(dang)我們使(shi)用razor作為(wei)頁面(mian)引擎時(shi),它的(de)視圖(tu)(tu)文件擴展(zhan)名(ming)為(wei)cshtml或者vbshtml,而之前作為(wei)分(fen)(fen)部視圖(tu)(tu)的(de)ascx文件,進行razor之后(hou),也是cshtml,這(zhe)與(yu)非(fei)razor引擎有(you)些不同,在(zai)這(zhe)方面(mian),官方并沒有(you)顯式把分(fen)(fen)部視圖(tu)(tu)與(yu)標準視圖(tu)(tu)分(fen)(fen)開(kai),有(you)時(shi),我們在(zai)開(kai)發時(shi),可(ke)能會出現(xian)一些混亂(luan)了,今天主要來說一下,如何正(zheng)確(que)的(de)使(shi)用分(fen)(fen)部視圖(tu)(tu)!
分部視(shi)(shi)圖(tu)在action中(zhong)返回(hui)一(yi)定要(yao)用PartialView(),而不要(yao)偷懶使用View(),因(yin)為(wei),如果(guo)你(ni)(ni)使用View()渲(xuan)染視(shi)(shi)圖(tu),系統會(hui)認為(wei)你(ni)(ni)是一(yi)個標(biao)準視(shi)(shi)圖(tu),會(hui)為(wei)你(ni)(ni)加個默認的母(mu)板頁(Layout),除非你(ni)(ni)顯式的設置了(le)Layout這個屬性。
之前的程序代碼:
1 public ActionResult PartialLogon() 2 { 3 return View();//會認識它的標準(zhun)視圖,所以會加上(shang)默認的Layout 4 }
當(dang)返回視圖后,你的(de)分部視圖會被加上(shang)默認的(de)母板頁(ye),這不是(shi)我們(men)希(xi)望看到(dao)的(de),當(dang)然有(you)些同學會不先麻煩的(de)在頁(ye)面(mian)上(shang)顯式的(de)加上(shang)Layout=null
事實上,如(ru)果你正確的返(fan)回(hui)分部(bu)視圖,這(zhe)行當然是(shi)不用(yong)加的,呵呵 。
正確的寫法:
1 public ActionResult PartialLogon() 2 { 3 return PartialView();//會(hui)將頁面的Layout自動設為null 4 }
怎么樣,這回知(zhi)道PartialView()與View()真(zhen)正的區別了(le)吧(ba),呵呵!
我想這后我們把這兩個(ge)東西(xi)換個(ge)名(ming)稱,PartialView()=>渲染視圖=>不(bu)帶Layout
View()=>渲染分部視圖=>自(zi)動加上Layout