• 爱上MVC3系列~Razor模板页


    回到目录

    Razor引擎与业面元素组织更加清晰,没有过滤的<%%>标题,它不再需要什么结束标记,使用@就可以实现一个完整的绑定,闭合<%%>这件事人家razor已经为咱做好了,呵呵。

    Razor模板页:它使我们不用在使用master模板了,而razor模板引擎代码更简洁,清晰,下面我们来具体说一下在模板中的出现的元素:

    一 @Url.Content:是可以加载CSS和JS等文件,使用Url.Content可以为URL地址进行统一的管理和设置。
    1 <head>
    2     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    3     <title>@ViewBag.Title</title>
    4     <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    5     <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
    6 </head>
    二 @RenderSection("Head", false):在模板页中我们会定义一些全局性的CSS,JS等文件,而与具体页面相关的CSS和JS文件及代码,我们可以保留在@RenderSection("Head", false)中,它能够
    让页面通过@section Head{}的形式,将个性化的代码呈现,其中参数false表示,具体页面可以不去实现这个section Head块。
    1 <body>
    2     @RenderSection("Head", false);
    3     <!-- 页面中可以没有Head节点-->
    4     <div class="page">

    调用:

    1 @section Head{
    2     <script>
    3         alert("Hello MVC3");
    4     </script>
    5 }
    三  @Html.Partial("_LogOnPartial"):分部视图,事实上就是MVC2中的ASCX视图,一些公用模块可以由它来呈现
    1  <div id="logindisplay">
    2     @Html.Partial("_LogOnPartial")
    3  </div>
    
    
    四  @RenderBody():用来存储具体的页面内容,页面所有正文内容都被自己放到了@RenderBody()容器里
    1   <div id="main">
    2             @RenderBody()
    3             <div id="footer">
    4             </div>
    5   </div>

    五 @RenderPage("~/Views/Shared/Foot.cshtml") :引入一个URL地址的页面

    六 _ViewStart.cshtml文件,它会在建立view时自己绑定到view中去,当然在view里通过下面语句设置自己的模板页:

    @{
        ViewBag.Title = "Test"; //设置页面标题
        Layout = "~/Views/Shared/_GreenLayout.cshtml"; //设置页面模板,如果不设置本属性则使用_ViewStart.cshtml里的模板页
    }

    七 页面Model绑定更加直观和清晰

    1 @model TEstMv3.Models.PersonLogOn
    2 @{
    3     ViewBag.Title = "LogOn";
    4 }

    八 ViewBag更灵活,它是MVC3中新加入的成员,与ViewData和TempData不同,它是一个dynamic类型的对象,并且内部规定了一些固定的属性如:ViewBag.Title它就代码页面

    的标题,MVC3会自动把它绑定到<title></title>标记中。看它是如何实现的:

     1    [Dynamic]
     2         public object ViewBag
     3         {
     4             [return: Dynamic]
     5             get
     6             {
     7                 Func<ViewDataDictionary> viewDataThunk = null;
     8                 if (this._dynamicViewData == null)
     9                 {
    10                     if (viewDataThunk == null)
    11                     {
    12                         viewDataThunk = () => this.ViewData;
    13                     }
    14                     this._dynamicViewData = new DynamicViewDataDictionary(viewDataThunk);
    15                 }
    16                 return this._dynamicViewData;
    17             }
    18         }

    从代码中我们不难发现,ViewBag不公是一个dynamic类型,而且它还把当前ViewData里的内容也追加了过来,那下面的使用是正确的,呵呵。

    1  public ActionResult Index()
    2   {
    3    ViewData["author"] = "张占岭";
    4  }1 @ViewBag.author //比ViewData["author"]这种形式更简

    在页面上直接这样输出:

    1 @ViewBag.author //比ViewData["author"]这种形式更简洁

    下一讲,将介绍在具体的页面中程序表现上的语法,介请收看。

    回到目录

  • 相关阅读:
    Python基础-博客
    已开发程序查询
    新语法
    html基础
    python操作excel
    Selenium
    练习2---(request,ajax爬取头条数据)
    练习1---request+正则(猫眼电影)
    框架---scrapy(基本用法)
    框架---Scrapy (框架安装)
  • 原文地址:https://www.cnblogs.com/lori/p/2544763.html
Copyright © 2020-2023  润新知