ASP.NET MVC3 在_ViewStart設定Layout後用RenderAction的注意事項
3/24 TW MVC第一次活動圓滿的結束了,雖然是RC,但也來了不少願意聽我們分享的好朋友。
社群最大的好處就是分享以及回饋,當天有朋友提了一些問題,我們會蒐集起來利用每週四聚會
或是平日的時間一一回覆的。
回到主題,在MVC3中,Views資料夾下的_ViewStart.cshtml是可以設定預設的Layout的,
在MVC3預設專案中,_ViewStart.cshtml會長這樣
![]()
也就是說,凡是有在頁面上沒有特別指定Layout的話,就會預設使用此設定。
一般來說是滿方便的,但有時太方便也是會出一點小狀況
在頁面上,會呼叫 Html.Action 或 Html.RenderAction (兩者只是回傳方式不同而已)
指定Controller及Action並返回指定的頁面,而在Controller內要return View時,
若是用ViewResult返回,而頁面上又沒特別指定Layout的話,就會造成Layout被重複載入;
若是此Html.Action是在Layout上呼叫,更會造成無限迴圈的慘劇…
![]()
如上圖,呼叫的地方重覆的載入了Layout。
此種情況最常發生在呼叫 Html.Action 或是利用Ajax呼叫某個Controller與Action後返回頁面時,容易疏忽
了頁面會預設使用_ViewStart中預設的Layout。
解決辦法大概有下列幾種:
- 在 Action return 時,使用return PartialView(); PartialViewResult是不會載入Layout的。
- 在ChildAction 回傳的View中,明確的指定這個頁面的Layout為null或是空字串。
- 不要在_ViewStart中指定Layout,但這應該是下下策了。可視情況使用此方法。
另外補一點小知識,例如_ViewStart或是_Layout都會使用"_"當作前綴字,這是因為不希望以此方式命名
文件被直接的訪問,因此只要是"_"開頭的,被直接瀏覽時就會出現以下錯誤
![]()
另外還有一點就是,_ViewStart.cshtml的找尋規則跟Web.config有點類似,會先從離目標文件同層的
資料夾開始找,如果沒有的話再繼續到父資料夾找。因此實際上是可以配置很多個_ViewStart在不同
的資料夾內的。
转自:http://www.dotblogs.com.tw/lastsecret/archive/2012/03/26/71052.aspx
ASP.NET MVC3 在_ViewStart設定Layout後用RenderAction的注意事項的更多相关文章
- ASP.NET MVC3 在_ViewStart设置Layout使用RenderAction的注意事項
来源:https://dotblogs.com.tw/lastsecret/archive/2012/03/26/71052.aspx ASP.NET MVC3 在_ViewStart設定Layout ...
- ASP.NET MVC3 系列教程 – 新的Layout布局系统
原文地址:http://www.cnblogs.com/highend/archive/2011/04/18/asp_net_mvc3_layout.html I:回忆MVC2当中MasterPage ...
- 关于asp.net MVC3 ----@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction
1.带有Render的方法返回值是void,在方法内部进行输出:不带的返回值类型为MvcHtmlString,所以只能这样使用:@Html.Partial 对应 @{Html.RenderPartia ...
- ASP.NET MVC3 系列教程 - 目录
ASP.NET MVC3 系列教程 - 目录 I:ASP.NET MVC3 新增的功能 ASP.NET MVC3 系列教程 - Razor视图引擎基础语法ASP.NET MVC3 系列教程 - V ...
- ASP.NET MVC 4 部署到 Windows Azure 如何轉換時區設定
由於公司慢慢地開始將新的專案都移往 Windows Azure 雲端平台做網站代管,漸漸地也開始遇到一些小問題,這些問題在還沒上雲端之前通常不會發生,像我們這次遇到的問題就跟顯示時間有關.由於 Win ...
- 《asp.net mvc3 高级编程》第三章 视图
一.视图的作用 视图的职责是向用户提供界面.从ASP.NET MVC3开始,视图数据也可以通过ViewBag属性访问.例如:ViewBag.Message 就等于ViewData["Mess ...
- Log4Net异常日志记录在asp.net mvc3.0的应用
前言 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是简单的介绍如何在Visual ...
- ASP.NET MVC3 Razor 调试与预加载
目录(?)[-] 获取服务器信息 FormsAuthenticationSlidingExpiration 属性 MVC3预加载 在ASP.NET MVC3开发中,调试中怎么也是不可缺少的,那对于 ...
- ASP.NET MVC3 局部页面@RENDERBODY @RENDERPAGE@RENDERSECTION使用方法详细说明
转载自:http://blog.163.com/wenchangqing_live/blog/static/173722309201211299817278/ asp.net mvc3局部页面使用方法 ...
随机推荐
- /etc/pam.d 与 /etc/security 密码策略
PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制.它通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统 ...
- MySQL实现定时任务
如果要每30秒执行以下语句 '; 可以给MySQL建个定时任务,具体如下: delimiter // /* 设定语句终结符为 //,因存储过程语句用;结束 */ 一.查看event是否开启 show ...
- 旧手机作为USB无线网卡使用(分享WIFI、蓝牙连接)
首先开启手机的WIFI或者蓝牙功能,建立访问互联网的连接,然后设置-更多-网络共享与便携热点,打开安卓手机USB网络共享功能,即可在计算机上通过手机(无电话卡.数据卡)访问互联网.而且此时手机一直在充 ...
- 趣拍SDK接入问题Android
Android接入趣拍问题. 大部分android开发者第一次下载SDK后,特别是导入到eclipse后,可以运行工程,但点击app中的record没反映,每次点击record按钮 会出现如下log. ...
- 【Vegas原创】RHEL6多界面切换方法
CTRL+ALT+Fn(n=1-6) F1,是图形化界面 F2-F6,是字符型界面. 每个界面可以干不同的事情,很牛叉.
- VS2010在运行状态下编辑代码
在VS2010环境下,当程序处于调试运行状态时,编辑代码会出现下图提示框: 这就给边编辑代码边查看程序运行效果带来不便. 解决方法:在程序没有运行的时候,打开菜单“工具”——>“选项”——> ...
- 用Java实现约瑟夫环
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重 ...
- 打包时Xcode报:此证书的签发者无效Missing iOS Distribution signing identity
问题描述 今天准备打包上传AppStore,结果Xcode报以下错误:Missing iOS Distribution signing identity for XXXXXX 查看证书后发现,Deve ...
- 采用ODAC,ODBC连接Oracle【转】
采用ODAC,ODBC连接Oracle 在没有装oracle的环境中,偶尔会需要访问数据库(Word文档查看数据,开发项目运行等等),简单介绍我用过的方案. 一:ODAC 1.介绍.ODAC,全称:o ...
- 让MyEclipse2013兼容Retina屏幕
1. 找到文件:/Applications/MyEclipse/MyEclipse Professional.app/Contents/Profile/myeclipse.app/Contents/I ...