在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
整体视图模板View模板会先找到对应的controller文件,再找此文件下的Shared文件夹。 比如项目最外层的View/Shared 目录下有一个_Layout.cshtml模板页,有这样代码: @{ ViewBag.Tile="我是模板页面"; } <body> <h2>我是主页面的模板代码</h2> @*此处为模板占位符*@ @RenderBody() </body> 在HomeController新建一个Action方法 public class HomeController : Controller { public ActionResult Index() { return View(); } } 添加Index视图。 @{ 运行: 其次,模板页还可以设置多个不同的占位符,如RenderSection渲染节点。 代码如下: 子页面: 运行结果: ViewStar使用Razor模板引擎的话,会自动生成一个_ViewStart.cshtml文件,无论你要呈现哪个视图之前,_Viewstart.cshtml中的代码总会被先执行。优先于同目录及子目录下的任何视图代码。 _ViewStart.cshtml中的代码如下,会为所有的视图都添加相同的默认的视图布局,如果某个子视图页面不想用此代码模板,可以重写Layout,或是直接不用视图模板,“Layout=null ”即可。 @{ Layout = "~/Views/Shared/_Layout.cshtml"; } 部分视图加载部分视图有许多方法。
语法:@Html.Partial( "Page12" ); @{ Html.RenderPartiall( "Page12" ) } 传参版本:Html.RenderPartial("usercontrolurl", model, ViewDataDictionary);@{Html.RenderPartial("BasicChart",ViewData["myData"]);} var data = new ViewDataDictionary(); data.Add("key", "value"); Html.RenderPartial("usercontrolurl", model, data); 区别:Partial是将视图内容直接生成一个字符串(MvcHtmlString)并返回,有个转义的过程,效率较低。 RenderPartial方法是直接输出至当前 HttpContext,性能较好。
语法:@Html.Action( "Page12" ); @{ Html.RenderAction( "Page12" ) } 传参版本:@Html.Action("视图","控制器",new { param1 = "abc", param2 = "def" }),@{ Html.RenderAction("Menu",new{ Stu=new Student{age=“12”,name=“sb”}}) } 区别:同上
区别:RenderPartial不需要去创建Controller的Action方法,而RenderAction需要创建Action方法,会先去调用Action方法在呈现视图。如果部分视图仅仅是Html代码,不需要重新读取新的数据,RenderPartial即可,可以传相应的molde或参数到部分视图中。或者部分视图需要通过读取数据库来重新渲染,就应该使用RenderAction
public ActionResult Menu(){ var men=GetMenuList(); return PartialView(men); } 读自《ASP.NET MVC 企业级实战》 |
请发表评论