RenderPage()加载局部页和传递数据
System.Web.WebPages.WebPageBase类的方法
public override HelperResult RenderPage(string path, params object[] data); 以下三种方式:
System.Web.WebPages.WebPageBase.PageData属性(public override IDictionary<object, dynamic> PageData)
System.Web.WebPages.WebPageBase.Page属性(public override dynamic Page)
System.Web.WebPages.WebPage.Model属性(public dynamic Model),注意区分System.Web.Mvc.WebViewPage.Model属性(public object Model)
index.cshtml 传递数据
@RenderPage("/_Footer.cshtml",
new { Title ="文档标题", Author=“作者” },new { Name="姓名", Age=23}
)
_Footer.cshtml 接收数据
1,PageData/Page key的方式,只能取到data数组的第一个值,并将其属性转为key,属性值转为value
<p>@PageData["Title"] , @PageData["Author"] </p> 输出: 文档标题,作者 ,注意这里的key不区分大小写
<p>@PageData["Name"] , @PageData["Age"] </p> 输出:null 或者使用Page属性
<p>@Page.Title , @Page.Author </p> 输出: 文档标题,作者 ,注意这里的key不区分大小写
<p>@Page.Name , @Page.Age </p> 输出:null
2,PageData索引的方式,data数组都可以输出
_Footer.cshtml 接收数据
<p>@PageData[0]</p> 输出:{ Title = "标题", Author = "作者" }
<p>@PageData[1]</p> 输出:{ Name = "姓名", Age = 23 }
<p>@PageData[2]</p> 输出:null,不报异常!!
总结:通过key的方式,只能取到参数data的第一个值;通过索引方式可以按照顺序取出data的所有值
3,Model属性取数据
_Footer.cshtml 接收数据
<p>@Model.Title , @Model.Author</p> 可以取到
<p>@Model.Name , @Model.Age</p>这个取不到 data数组的第一个匿名类赋值给了WebPage类的Model属性,因此可以使用”@Model.匿名类属性“ 的方式访问到。
类似 PageData["key"]/Page.key的方式,只能取到data数组的第一个值,优点是比PageData["key"]方式灵活,跟Page.key类似
//分析源代码,只有第二个参数会被转为model(System.Web.WebPages.WebPageBase类)
private WebPageContext CreatePageContextFromParameters(bool isLayoutPage, params object[] data)
{
object model = null;
if (data != null && data.Length > )
{
model = data[];//只有第一个参数会转为model
}
IDictionary<object, object> pageData = PageDataDictionary<object>.CreatePageDataFromParameters(this.PageData, data);
return WebPageContext.CreateNestedPageContext<object>(base.PageContext, pageData, model, isLayoutPage);
}
RenderPage()加载局部页和传递数据的更多相关文章
- JavaScript之加载表格、表单行数据[插件]
/*** * name:加载表格或表单数据[通用] * name:load-table-or-form-data-common.js * * author:zengtai * date:2017-07 ...
- 使用pjax时点击浏览器刷新按钮仅加载内容页的解决办法
pjax可以实现ajax的局部刷新功能,同时能改变地址栏的URL,因此支持浏览器的后退和前进功能. 但是,在使用中,若没有正确使用,仍然会出现一些问题. 比如,我们在使用pjax后,能够在不加载整个页 ...
- vs 2015 "加载该页时出错。" 解决方案
错误信息: 加载该页时出错. 未找到与约束 ContractName Microsoft.CodeAnalysis.Editor.TypeScript.ScriptContexts.ITypeSc ...
- EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载
之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过Ob ...
- js 鼠标滚动到某屏时,加载那一屏的数据,仿京东首页楼层异步加载模式
js用处:在做商城时,首页图片太多,严重影响首页打开速度,所以我们需要用到异步加载楼层.js名称:鼠标滚动到某屏时,加载那一屏的数据,仿京东首页楼层模式js解释:1.用于商城的楼层内容异步加载,滚动条 ...
- 只用css实现“每列四行,加载完一列后数据自动填充到下一列”的效果
只用css实现“每列四行,加载完一列后数据自动填充到下一列”的效果.这个题目用图表示如下: 如果将题目换成“只用css实现每行四列,加载完一行后数据自动填充到下一行”,那这个问题就简单多了,相信大家都 ...
- JS加载获取父窗体传递的参数
JS加载获取父窗体传递的参数 $(document).ready(function () { var query = location.search.substring(1); var values ...
- @ConfigurationProperties(pref="")加载局部配置文件
刚开始@ConfigurationProperties(文件名)直接在参数里加文件名,其实是配置前缀pref="前缀".加载局部配置文件是@PropertySource(value ...
- javscript 实现iframe加载内容页出现LOADING效果
<div id="load" align="center"> <img src="http://sc.cnwebshow.com/u ...
随机推荐
- 用户从手机的浏览器访问www.baidu.com,看到的可能跟桌面PC电脑,是不太一样的网页效果,会更适合移动设备使用。请简要分析一下,实现这种网页区分显示的原因及技术原理。
手机的网速问题.屏幕大小.内存.CPU等.通过不同设备的特征,实现不同的网页展现或输出效果.根据useragent.屏幕大小信息.IP.网速.css media Query等原理,实现前端或后端的特征 ...
- Mysql Docker Container Command
Hello, in my docker-compose file I have the following: db: image: mysql command: mysqld --character- ...
- SVN 提交、更新、解决冲突等操作步骤
1. 纳入版本控制 ①新建文件abc.txt ②在文件上点右键 ③添加后文件图标发生变化 2. 提交 ①使用TortoiseSVN可以提交具体某一个文件,或某一个目录下的所有改变.方法就是在想要提交的 ...
- 推荐一篇mysql优化干货
淘宝的技术一直比较前沿,特别是LVS的作者加入淘宝后,淘宝和阿里的开源做的有声有色,君不见淘宝出了tengine,tairs,tddl,hsf(soa框架,未开源),tfs(小文件存储系统)等等,阿里 ...
- 修改android Studio SDK 路径产生的问题(模拟器不能启动了)
原因:将 c:\user\admin\appdata\android\sdk 修改为 F:\AndroidProgram\Sdk 原来的虚拟机不能用了,要新建虚拟机才可以.
- C#内存流示例----->用内存流来读取图片
背景:一个窗体.一个pictureBox.一个lable[没有选择图片,lable的text为"图片未选择"],在pictureBox1的Click事件中添加如下代码: priva ...
- django admin 中实现word文档下载
为了实现此功能,需要用到的知识点: (1)django admin 自定义字段: 参考:http://www.cnblogs.com/wumingxiaoyao/p/6928297.html ...
- rtmp聊天相关归总
使用共享对象(SharedObject)来开发时时文字聊天其实是很简单的. SharedObject可以跟踪和广播消息,连接到SharedObject中的其中任何一个客户端改变了SharedObjec ...
- jaegeropentracing的Java-client完整分布式追踪链
jaegeropentracing的Java-client完整分布式追踪链,在分布式系统中透传trace信息 之前文章记录了jaegeropentracing的Java-client追踪链在单系统中的 ...
- hbase安装与配置-分布式
HBASE安装与配置 备注: 1:本文在hadoop的完全分布式基础上部署hbase 2:本文使用的是小博主自己搭建的zookpeer服务,未使用hbase本身的zookpeer服务 本文内容在以下前 ...