asp.net MVC 4.0 View回顾——布局页与分部页
asp.net MVC 4.0中总结 视图里加载部分视图几种方法
@RenderPage()
但它不能使用 原来视图的 Model 和 ViewData ,只能通过参数来传递。
@RenderPage("~/Shared/Component/Dialog.cshtml", new { title = "Hello world!", content="Nani" })
分部视图接收数据通过Page
<div id="dialog" title="@Page.title" style="display: none;">
<p>
@Page.title
</p>
</div>
@Html.Partial()
用于将分部视图渲染为字符串
@Html.Partial("_PartialPage1",model,ViewData)直接返回MvcHtmlString填充
@Html.Partial("Component/Dialog", null, new ViewDataDictionary { { "title", "Hello world!" }, { "content", "Nani?" } })
Razor子视图里使用 ViewBag 来获取传递的数据
<div id="dialog" title="@ViewBag.title" style="display: none;">
<p>
@ViewBag.content
</p>
</div>
传递强类型到部分视图
@{
var args = new Dictionary<string,string>();
args["redirectController"] = "Admin";
args["redirectAction"] = "User";
}
6 @Html.Partial("_childPartial",args)
_childPartial.cshtml
@model Dictionary<string,string>
<div>@Model["redirectController"]</div>
<div>@Model["redirectAction"]</div>
@RenderPartial()
将分布视图直接写入响应输出流,所以只能直接放在代码块中,不能放在表达式中(返回值是void)
RenderPartial 不需要创建 Controller 的 Action ,而 RenderAction 需要在 Controller 创建要加载的 Action。RenderAction 会先去调用 Contorller 的 Action ,最后再 呈现视图,所以这里 页面会在 发起一个链接。如果这个部分视图只是一些简单 的 html 代码,请使用 RenderPartial。 但如果这个部分视图 除了有 html 代码外,还需要 通过 读取数据库里的数据 来渲染,就必须使用 RenderAction 了,因为 它可以在 Action 里调用 Model里的 法读取数据库,渲染视图后在呈现,而 RenderPartial 没有 Action,所以无法做到。
Partial 可以直接输出内容,它内部是 将 html 内容转换为 string 字符(MVCHtmlString),然后缓存起来, 最后在一次性输出到页面。显然,这个转换的过程,会降低效率,所以通常使用 RenderPartial 代替。
@Html.Action()
实体类
public class Menu
{
public List<MenuItem> Items { get; set; }
} public class MenuItem
{
public string Text { get; set; }
public string Url { get; set; }
}
控制器
public ActionResult MyMenu()
{
MvcLearn.Models.Menu m = new MvcLearn.Models.Menu();
List<MvcLearn.Models.MenuItem> items = new List<MenuItem>();
items.Add( new MenuItem(){ Text = "Baidu", Url = "http://www.baidu.com"});
items.Add(new MenuItem() { Text = "Sina", Url = "http://www.Sina.com" });
items.Add(new MenuItem() { Text = "IBM", Url = "http://www.ibm.com" });
items.Add(new MenuItem() { Text = "Sohu", Url = "http://www.sohu.com" });
m.Items = items;
return PartialView(m);
}
建立一个PartialView - MyMenu.cshtml
@model MvcLearn.Models.Menu
<ul>
@foreach(var item in Model.Items)
{
<li><a href="@item.Url">@item.Text</a></li>
}
</ul>
在页面中调用该Action生成视图:
@Html.Action("MyMenu")
调用Action时传入参数
@Html.Action("MyMenu", new { mi= new MvcLearn.Models.MenuItem(){ Text = "haha", Url =<a href="http://www.ms.com">http://www.ms.com</a>}})
@Html.RenderAction()
@{Html.RenderAction("MyMenu")}
Action 也是直接输出,和 Partial 一样,也存在一个转换的过程。不如 RenderAction 直接输出到 当前HttpContext 的效率高。
asp.net MVC 4.0 View回顾——布局页与分部页的更多相关文章
- asp.net MVC 4.0 Controller回顾——ModelBinding实现过程
以DefaultModelBinder为例 为简单模型绑定(BindSimpleModel)和复杂模型绑定(BindComplexModel) public virtual object BindMo ...
- 返璞归真 asp.net mvc (12) - asp.net mvc 4.0 新特性之移动特性
原文:返璞归真 asp.net mvc (12) - asp.net mvc 4.0 新特性之移动特性 [索引页][源码下载] 返璞归真 asp.net mvc (12) - asp.net mvc ...
- 返璞归真 asp.net mvc (10) - asp.net mvc 4.0 新特性之 Web API
原文:返璞归真 asp.net mvc (10) - asp.net mvc 4.0 新特性之 Web API [索引页][源码下载] 返璞归真 asp.net mvc (10) - asp.net ...
- 返璞归真 asp.net mvc (9) - asp.net mvc 3.0 新特性之 View(Razor)
原文:返璞归真 asp.net mvc (9) - asp.net mvc 3.0 新特性之 View(Razor) [索引页][源码下载] 返璞归真 asp.net mvc (9) - asp.ne ...
- ASP.NET没有魔法——ASP.NET MVC Razor与View渲染
对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的界面呈现工作是由浏览器完成的,Web应用的原理是通过Http协议从服务器上获取到 ...
- ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 ASP.NET没有魔法——ASP.NET MVC界面美化及使用Bundle完成静态资源管理
ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的 ...
- (转)ASP.NET Mvc 2.0 - 1. Areas的创建与执行
转自:http://www.cnblogs.com/terrysun/archive/2010/04/13/1711218.html ASP.NET Mvc 2.0 - 1. Areas的创建与执行 ...
- ASP.NET MVC 3.0 Controller基础
ASP.NET MVC 3.0 Controller基础 1.Controller类与方法 Controller(控制器)是ASP.NET MVC的核心,负责处理浏览器请求,并作出响应.Cotro ...
- 从零开始学习ASP.NET MVC 1.0
转自:http://www.cnblogs.com/zhangziqiu/archive/2009/02/27/ASPNET-MVC-1.html <从零开始学习ASP.NET MVC 1.0& ...
随机推荐
- /etc/bashrc和/etc/profile
在一般的 linux 或者 unix 系统中, 都可以通过编辑 bashrc 和 profile来设置用户的工作环境, 很多文章对于 profile 和 bashrc 也都有使用, 但究竟每个文件都有 ...
- POJ1511(最短路大数据处理)
Invitation Cards Time Limit: 8000MS Memory Limit: 262144K Total Submissions: 23357 Accepted: 767 ...
- <c和指针>学习笔记3之操作符,表达式与指针
1 操作符 (1)移位操作符 左移<<:值最左边的几位丢弃,右边多出来的几个空位用0补齐 01101101 011(丢弃)01101000(后面三位补0) 右移>>: 算术左移 ...
- python3.5 使用tkinter 和requests库实现天气图像化显示
1 """ 该python小例子考察使用了tkinter库,requests库 其中: requests库用来发送网络请求 thkinter用来显示图形化界面 请求的天气 ...
- gitHub上传代码
首先进入github官网注册一个帐号 00.png 注册完帐号之后创建一个项目 01.png 设置创建项目的信息 02.png 创建项目完之后复制项目的地址,以供后面下载项目使用 03.png 在桌面 ...
- 【转】mysql数据库的数据类型
一.数值类型 Mysql支持所有标准SQL中的数值类型,其中包括: 严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC ...
- 《剑指offer》面试题22—栈的压入、弹出序列
<程序员面试宝典>上也有经典的火车进站问题,类似. 如果12345是压栈顺序,序列45321可能是出栈顺序,但序列43512不可能. 规律:对序列中任意元素n,排在n后且比n小的元素一定是 ...
- MYSQL中coalesce函数的用法
coalesce():返回参数中的第一个非空表达式(从左向右依次类推): 例如: select coalesce(null,4,5); // 返回4 select coalesce(null,null ...
- Unity 5.6中的混合光照(上)
https://mp.weixin.qq.com/s/AbWM21sihHw5pFdMzENDPg 在Unity 5中,光照得到了很大的改进.现在,创建高度逼真的游戏已成为可能.但是,出于对性能的考虑 ...
- ps色彩混合
http://tieba.baidu.com/p/2032536851?pn=1 HSB 这是一种颜色的表示方法:其中"H"表示色相,"S"表示饱和度,&quo ...