ASP.NET MVC3 在_ViewStart设置Layout使用RenderAction的注意事項
来源:https://dotblogs.com.tw/lastsecret/archive/2012/03/26/71052.aspx
ASP.NET MVC3 在_ViewStart設定Layout後用RenderAction的注意事項
- 18072
- 0
- ASP.NET MVC學習筆記
- 檢舉文章
ASP.NET MVC3 _ViewStart設定Layout後用RenderAction的注意事項
3/24 TW MVC第一次活動圓滿的結束了,雖然是RC,但也來了不少願意聽我們分享的好朋友。
社群最大的好處就是分享以及回饋,當天有朋友提了一些問題,我們會蒐集起來利用每週四聚會
或是平日的時間一一回覆的。
回到主題,在MVC3中,Views資料夾下的_ViewStart.cshtml是可以設定預設的Layout的,
在MVC3預設專案中,_ViewStart.cshtml會長這樣
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
也就是說,凡是有在頁面上沒有特別指定Layout的話,就會預設使用此設定。
一般來說是滿方便的,但有時太方便也是會出一點小狀況
在頁面上,會呼叫 Html.Action 或 Html.RenderAction (兩者只是回傳方式不同而已)
指定Controller及Action並返回指定的頁面,而在Controller內要return View時,
若是用ViewResult返回,而頁面上又沒特別指定Layout的話,就會造成Layout被重複載入;
若是此Html.Action是在Layout上呼叫, 部分页中会再次显示Layout中的内容。

如上圖,呼叫的地方重覆的載入了Layout。
此種情況最常發生在呼叫 Html.Action 或是利用Ajax呼叫某個Controller與Action後返回頁面時,容易疏忽
了頁面會預設使用_ViewStart中預設的Layout。
解決辦法大概有下列幾種:
- 在 Action return 時,使用return PartialView(); PartialViewResult是不會載入Layout的。
public ActionResult ThisPatial()
{
//return View();
return PartialView();
}
- 在ChildAction 回傳的View中,明確的指定這個頁面的Layout為null或是空字串。
@{
Layout = null;
}
- 不要在_ViewStart中指定Layout,但這應該是下下策了。可視情況使用此方法。
另外補一點小知識,例如_ViewStart或是_Layout都會使用"_"當作前綴字,這是因為不希望以此方式命名
文件被直接的訪問,因此只要是"_"開頭的,被直接瀏覽時就會出現以下錯誤
![]()
另外還有一點就是,_ViewStart.cshtml的找尋規則跟Web.config有點類似,會先從離目標文件同層的
資料夾開始找,如果沒有的話再繼續到父資料夾找。因此實際上是可以配置很多個_ViewStart在不同
的資料夾內的。
ASP.NET MVC3 在_ViewStart设置Layout使用RenderAction的注意事項的更多相关文章
- ASP.NET MVC3 在_ViewStart設定Layout後用RenderAction的注意事項
ASP.NET MVC3 在_ViewStart設定Layout後用RenderAction的注意事項 3/24 TW MVC第一次活動圓滿的結束了,雖然是RC,但也來了不少願意聽我們分享的好朋友. ...
- ASP.NET MVC3 系列教程 – 新的Layout布局系统
原文地址:http://www.cnblogs.com/highend/archive/2011/04/18/asp_net_mvc3_layout.html I:回忆MVC2当中MasterPage ...
- MVC中的_viewstart.cshtml(没有设置Layout却引用了布局)
今天Home视图中新增了一个视图,因为不需要设置Layout就没与管他,但是运行起来一看,自动引用了布局,分析了半天 也没看出是哪的错误? 后来尝试着在area中增加了一个同样的视图就没有问题,比较这 ...
- 《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开发中,调试中怎么也是不可缺少的,那对于 ...
- Log4Net异常日志记录在asp.net mvc3.0的应用(转载)
这篇博客写的很好:http://www.cnblogs.com/qianlifeng/archive/2011/04/22/2024856.html 前言 log4net是.Net下一个非常优秀的开源 ...
- ASP.NET MVC3 Model验证总结 @Html.ValidationSummary(true)
http://www.wyjexplorer.cn/Post/2012/8/3/model-validation-in-aspnet-mvc3 ASP.NET MVC3中的Model是自验证的,这是通 ...
- jQuery Uploadify在ASP.NET MVC3中的使用
1.Uploadify简介 Uploadify是基于jQuery的一种上传插件,支持多文件.带进度条显示上传,在项目开发中常被使用. Uploadify官方网址:http://www.uploadif ...
随机推荐
- NodeJs在windows上安装配置测试
Node.js简介简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个 ...
- [转] KVM虚拟化技术生态环境介绍
KVM虚拟化技术生态环境介绍 http://xanpeng.github.io/wiki/virt/kvm-virtulization-echosystem-intro.html kvm和qemu/q ...
- Jenkins 定时构建语法规则
1.Jenkins自由风格任务定时构建 2.语法规则 定时构建语法 * * * * * 第一个*表示分钟,取值0~59 第二个*表示小时,取值0~23 第三个*表示一个月的第几天,取值1~31 第四个 ...
- 你可以这么理解五种I/O模型
因为项目需要,接触和使用了Netty,Netty是高性能NIO通信框架,在业界拥有很好的口碑,但知其然不知其所以然. 所以本系列文章将从基础开始学起,深入细致的学习NIO.本文主要是介绍五种I/O模型 ...
- 用java开发dota英雄最华丽的技能
爱java 爱dota,突发奇想想用java开发dota操作最华丽的英雄之一的卡尔的技能,因为本人系小白,代码不足的地方还请包涵,有同样爱好的同学欢迎一起研究学习. 先把我的代码呈上 import ...
- Numpy学习一:ndarray数组对象
NumPy是Python的一个高性能科学计算和数据分析基础库,提供了功能强大的多维数组对象ndarray.jupyter notebook快速执行代码的快捷键:鼠标点击选中要指定的代码框,Shift ...
- Git使用详细教程(2):配置用户名和邮箱
首先,说下最常用的设置用户名和邮箱的命令 git config --global user.name 'xxx' //设置用户名 git config --global user.email 'xxx ...
- 【Spark调优】大表join大表,少数key导致数据倾斜解决方案
[使用场景] 两个RDD进行join的时候,如果数据量都比较大,那么此时可以sample看下两个RDD中的key分布情况.如果出现数据倾斜,是因为其中某一个RDD中的少数几个key的数据量过大,而另一 ...
- 导出到word
导出到excel功能会常做,但是导出到word功能很少做,项目遇到,在这里做一下标记. 导出到excel比较容易,excel都有固定格式也模板,但是word需要自己写模板,这里用了freemarker ...
- python(leetcode)-283移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作, ...