标签:
public ActionResult Index() { ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";//展现到视图中数据 //~/Views/Home/Index.cshtml return View(); //展现指定的视图,当没有指定视图名称时,默认是指向根目录下Views文件夹中,子文件夹名称为当前控制器名称Home,视图名称和当前Action名称一样 }
ViewBag本质上是一个字典,它提供了一种View可以访问的动态数据存储,这用到了.NET4.0的动态语言特性,你可以给ViewBag添加任意的属性,这个属性是动态创建的,你不需要修改类的定义,就可以从View中访问
View和Action之间数据传递(前后台数据传递)
弱类型 ViewData[""]
动态型 ViewBag //dynamic
动态类型Model
后台:return View(data); //存入 ViewData.Model
前台:Model //其实就是 WebViewPage.Model
public ActionResult Index()
{
Employee data = new Employee();
data.Name = "张三";
data.Age = 26;
return View(data);
}
1.@RenderBody() //模板页里的占位符
2.@{
Layout = "~/Views/Shared/MyLayout.cshtml";
View.Title="Employee";
}
<p>子页所有html代码都将替换到 模板页的@RenderBody()处</p>
应用整体视图模板 - 多个"占位符"
3.模板页多个节:
<footer>@RenderSection("Footer")</footer>
子页面定义节点:
@section Footer{ <b>这里是脚部区域!</b> }
模板页判断是否为布局节方法,IsSectionDeined
@if(IsSectionDefined("Footer")){ @RenderSection("Footer"); }else { <b>“子页面”没有Footer~</b> }
Razor 布局 – ViewStart
每个子页面都使用一个Layout指定布局。如果多个视图都用同一个布局就会产生冗余,修改维护麻烦。
_ViewStart.cshtml 可解决此问题
此文件代码优先于同目录及子目录下任何视图代码执行
View目录下自动添加的_ViewStart.cshtml
@{ Layout = "~/Views/Shared/_Layout.cshtml"; }
其实我们的cshtml视图页面,在被访问的时候,也编译成了页面类,继承于:WebViewPage<T>
在View页面,添加代码
<div>@{Response.Write(this.GetType().Assembly.Location);}</div>
运行结果:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\0282ae3e\58806453\App_Web_irdyebpa.dll
标签:
原文地址:http://www.cnblogs.com/xiaoheqin/p/5755897.html