zoukankan      html  css  js  c++  java
  • [ASP.NET MVC] Razor 布局

    整体视图模板

    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视图。

    @{
    Layout = "~/Views/Shared/_Layout.cshtml"; ViewBag.Title
    = "某个子页面"; } <h2>hell,我是子页面</h2>

    运行:

     其次,模板页还可以设置多个不同的占位符,如RenderSection渲染节点。

    代码如下:

     子页面:

    运行结果:

    ViewStar

     使用Razor模板引擎的话,会自动生成一个_ViewStart.cshtml文件,无论你要呈现哪个视图之前,_Viewstart.cshtml中的代码总会被先执行。优先于同目录及子目录下的任何视图代码。

    _ViewStart.cshtml中的代码如下,会为所有的视图都添加相同的默认的视图布局,如果某个子视图页面不想用此代码模板,可以重写Layout,或是直接不用视图模板,“Layout=null ”即可。

    @{
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

    部分视图

    加载部分视图有许多方法。

    • Html.Partial和Html. RenderPartial

      语法:@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和Html.RenderAction

      语法:@Html.Action( "Page12" );  @{  Html.RenderAction( "Page12" ) }

      传参版本:@Html.Action("视图","控制器",new { param1 = "abc", param2 = "def" }),@{  Html.RenderAction("Menu",new{ Stu=new Student{age=“12”,name=“sb”}})  }

      区别:同上

    • Html. RenderPartial和Html.RenderAction

      区别RenderPartial不需要去创建Controller的Action方法,而RenderAction需要创建Action方法,会先去调用Action方法在呈现视图。如果部分视图仅仅是Html代码,不需要重新读取新的数据,RenderPartial即可,可以传相应的molde或参数到部分视图中。或者部分视图需要通过读取数据库来重新渲染,就应该使用RenderAction

    •  Aciton方法可以通过PartialView方法以PartialViewResult形式返回局部视图
    public ActionResult Menu(){
        var men=GetMenuList();
        return PartialView(men);
    }

    读自《ASP.NET MVC 企业级实战》

  • 相关阅读:
    HDOJ 1284 钱币兑换问题 (求多重背包恰好装满总方案数)
    linux sysfs(1)
    这三天低效率开发的总结,我都做了些什么啊?
    达内C++培训课程
    [置顶] 81——复数类运算符的重载 double数据与复数之间的运算 任务三
    编码问题
    【IPAACV】MarrHildreth边缘检测器
    HashMap中的内容进行迭代输出
    低调 、隐忍、善良应是最应该修炼的
    windows下php7.1安装redis扩展以及redis测试使用全过程
  • 原文地址:https://www.cnblogs.com/qiuguochao/p/7512477.html
Copyright © 2011-2022 走看看