zoukankan      html  css  js  c++  java
  • 第5章——使用 Razor(MVC框架视图引擎)

        Razor 是MVC框架视图引擎的名称。

        本章提供 Razor 语法的快速教程,以使你能够识别 Razor 表达式。

        本章不打算提供 Razor 的完整参考,而将其视为一个语法速成教程。在本书的后续内容中,将随着 MVC 框架的其他特性深入考察 Razor 。

    5.1 准备示例项目

        使用 “ASP.NET MVC Web Application” 模板创建一个名称为 “Razor” 的新项目。(这里选择 “空” 选项,勾选 “MVC” 复选框)

      5.1.1 定义模型

        本小节打算从一个名称为 Product 的简单域模型开始,其定义(略)放在名称为 Product.cs 的类文件中。

      5.1.2 定义控制器

        本小节打算遵循 MVC 框架的约定,并定义一个名称为 Home 的控制器作为项目的起始点。

        (该控制器中创建了一个 Product 对象,并对其属性进行填充,同时还定义了一个叫做 Index 的动作方法,在其中将 Product 对象传递给了 View 方法,以便在渲染视图时使用它)

        (在调用 View 方法时,并未指定视图文件的名称,因此,这将会使用该动作的默认视图)

      5.1.3 创建视图

        右击 Index 方法,选择“添加视图”,确保名称为 “Index”,将“模板”设置为 “空”,模型类选择 “Product”。(如果没有找到“Product”选项,请编译该项目并重复上述步骤)

        去掉已勾选的 “试图选项” 复选框,单击 “添加” 按钮。

    以下小节将概览 Razor 视图的各个方面,并演示可以在其中所做的一些不同操作。

        在学习 Razor 时要意识到,视图的目标是将模型的一个或多个部分表现给用户。

        记住这一点是有好处的,而且这也意味着,视图会生成显示数据的 HTML,这些数据来自于视图所接收的一个或多个对象。

        如果你总能记住 “这是在建立一个能够发送给客户端的 HTML 页面”,那么,Razor 所做的一切事情就变得有意义了。

    5.2 使用模型对象

        Razor 语句以 @ 字符开始。

        @model 语句声明了通过动作方法传递给该视图模型对象的类型,这让我们能够通过 @Model 来引用视图模型对象的方法、字段和属性。

        (声明视图模型对象的类型使用了小写的 m,而引用数据时使用的是大写的 M)

        通过使用 @model 表达式,便是在告诉 MVC 将在视图中使用的是哪种类型的对象。

    5.3 使用布局

        Razor 代码块允许在视图中包含 C# 语句。(这种代码块以 “@{” 开始,以 “}” 结束,而其中的语句会在视图被渲染时执行)

        正如第 20 章将要解释的那样,在一个 MVC 应用程序中,Razor 视图会被编译成 C# 类,而所用的基类定义了 Layout 属性。

        将 Layout 属性设置为 null 的效果是告诉 MVC 框架,该视图是自包含的,并且会渲染客户端所需要的全部内容。

        自包含视图十分适用于简单示例应用程序,但一个实际项目可能会有数十个视图。布局是十分有效的模板,它含有用以创建应用程序一致性的标记 —— 这能够确保在结果中包含适当的 JavaScrit 库。

      5.3.1 创建布局

        右击 Views 文件夹,选择 “添加”、“新建项”,选择 “MVC 5 布局页(Razor)”模板

        将文件名设置为 _BasicLayout.cshtml,并单击 “添加” 按钮

        注:Views 文件夹中以画线 “_” 打头的文件是不会被返回给用户的,它允许通过文件名来区分要进行渲染的视图和对视图进行支持的文件。布局是支持文件,故以下划线为前缀。

        布局是特殊形式的视图。

        对 @RenderBody 方法的调用会将动作方法所指定的视图内容插入到布局标记之中

        布局中的另一个 Razor 表达式会在 ViewBag 中查找一个叫做 Title 的属性,目的是设置 title 元素的内容。

        布局中的元素会被运用于使用此布局的任何视图,而这正是使用布局为基本模板的原因

      5.3.2 运用布局

        为了将布局运用于视图,只需要设置 Layout 属性的值即可。

        布局中包含了一些 HTML 元素,这些元素定义了对浏览器进行相应时的 HTML 页面的结构。(因此可以将视图中原来的这些元素去掉)

        简化后的 Index.cshtml 文件:

            @model Razor(项目名称).Model.Product

            @{

              ViewBag.Title = "产品名称";

              Layout = "~/ Views / _BasicLayout.cshtml";

            }

            产品名称:@Model.Name

        这种转换不仅让笔者简化了标记,还意味着不必在每一个创建的视图中重复那些通用元素。

      5.3.3 使用视图起始文件

        笔者还有一个小问题要解决,就是必须在每一个视图都要指定布局文件。—— 这意味着,如果需要重命名布局文件,那么必须找出引用该布局的每一个视图,并进行修改。(这将是一个易错的过程,而且这与贯穿于 MVC 框架的易维护主题是相悖的)

        通过使用视图起始文件可以解决这个问题。—— 在渲染一个视图时,MVC 框架会查找一个叫做 _ViewStart.cshtml 的文件。框架会将此文件的内容视为视图文件的一部分,于是笔者可以使用这一特性为 Layout 属性自动第设置一个值。

        为了创建一个视图起始文件,可以对 Views 文件夹添加一个新的布局文件,并将该文件的名称设置为 _ViewStart.cshtml(再次注意前面的下画线)。编辑文件内容为:

            @{

              Layout = "~/ Views / _BasicLayout.cshtml";

            }

        此视图起始文件含有 Layout 属性的值,这意味着可以去除 Index.cshtml 文件中的相应语句。

        笔者不必以任何方式指定希望使用的视图起始文件,MVC 框架会对此文件进行定位,并自动第使用其内容。

        在视图文件中对 Layout 属性值所做的定义具有更高的优先级,这便于对视图起始文件进行覆盖。—— 意即,若在视图中重新定义了 Layout 的值,会覆盖视图起始文件中所指定的布局。

        要理解忽略视图文件的 Layout 属性与将其设置为 null 两者之间的差别。—— 如果视图是自包含的,并且不想使用布局,那么将 Layout 属性设置为 null。如果忽略 Layout 属性,那么 MVC 框架将假设你确实想用一个布局,而且它应该使用视图起始文件中所找到的那个值。

      5.3.4 使用共享布局

        添加动作方法并创建视图。—— 将“模板”设置为 “空”,选择 “模型类”并确保勾选了 “使用布局页面” 复选框

        如果你希望使用在视图起始文件中指定的视图,则应让文本框为空。

        如果打算明确地指定布局视图,可以单击文本框右侧的省略号按钮。

    5.4 使用 Razor 表达式

  • 相关阅读:
    判断闰年
    CaesarCode
    substring
    configure: error: Cannot use an external APR with the bundled APR-util
    字符串处理487-3279
    git分支管理
    git解决冲突
    git 分支的创建和切换
    nginx与php-fpm原理
    git 远程仓库与本地项目关联
  • 原文地址:https://www.cnblogs.com/zhangchaoran/p/7457425.html
Copyright © 2011-2022 走看看