ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

时间:2021-07-13 19:10:38

https://blog.csdn.net/qq_21419015/article/details/80451895

1、准备示例项目

为了演示Razor,使用VS创建一个名称为“Razor”的新项目;这里选择 “Empty(空)”选项,并勾选“MVC”复选框。

定义模型

在Models文件夹下添加一个“Product”类,完成类如下所示:

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

定义控制器

在Controller文件夹下添加“HomeController”,编辑文件与下图匹配

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

创建视图

选中Index,右键添加视图,按照上图设置成强类型视图。如果在模型类选项中未发现Model,先编译在添加。

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

2、使用模型对象

Razor语句以@ 字符开始,@model 语句声明了控制器方法传递给视图的模型对象类型。Index.cshtml 如下:

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

右键 Index.cshtml,在浏览器中查看:

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

3、使用布局

Index.cshtml视图文件的另一个Razor表达式如下:

@{
Layout=null;
}
这是Razor 代码块的例子,这个代码块允许视图包含C#语句,这种代码块以“@{”开始,以“}”结尾,上述代码将Layout 属性值设置为 null ,效果就是告诉MVC 框架,视图时自包含的,并且会渲染客户端所需的全部内容。

创建布局

为了创建一个布局,在“解决方案资源管理器”中右击“Views”文件夹,在弹出菜单选择“Add(添加)”->New Item(新建项),并在打开的对话框中选择“MVC5 Layout Page (MVC 5 布局页(Razor))”模板,如下:

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

将文件名设置为 _BasicLayout.cshtml ,文件最初内容如下:

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

编辑_BasicLayout.cshtml文件匹配下图:

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

这里,添加了2个标题元素(<h1>、<h2>),并且包含@RenderBody()表达式的div元素,运用了一些CSS样式,看起来好看些。

运用布局

在 Index.cshtml 文件使用Layout属性:

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

右键 Index.cshtml ,在浏览器查看:

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

使用视图起始文件
在这里其实有一个问题需要解决,就是每一个视图都指定布局文件后,如果布局文件重命名了,那么必须找到引用该布局的每一个视图进行修改,这是一个庞大易错复杂的工程,不符合MVC易维护主题。这里可以通过视图起始文件实现。在“Views”文件夹下继续新建一个 _ViewStart.cshtml ,编辑新文件匹配下图:(多余内容删除)

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

此文件中含有Layout属性值;这就意味着可以除掉 Index.cshtml 文件中相应的句子。如下所示:

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

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

注意:Layout不赋值说明用默认布局,Layout=null,说明不要布局

演示共享布局

为了对共享布局进行简明的演示,在Home控制器中添加一个新的动作,NameAndPrice():

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

该方法动作将 myProduct 对象传递给 View 方法,右键 NameAndPrice ,从弹出菜单中选 "添加视图" --> 设置视图选项与下图匹配;

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

此时 NameAndPrice.cshtml 如下所示:(下面 The ...自己为添加的一段话)

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

选中NameAndPrice.cshtml,在浏览器中查看:

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)

ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)的更多相关文章

  1. ASP&period;NET &plus; MVC5 入门完整教程八 -—-- 一个完整的应用程序(上)

    https://blog.csdn.net/qq_21419015/article/details/80509513 SportsStore 1.开始创建Visual Studio 解决方案和项目这里 ...

  2. ASP&period;NET &plus; MVC5 入门完整教程七 -—-- MVC基本工具(上)

    https://blog.csdn.net/qq_21419015/article/details/80474956 这里主要介绍三类工具之一的 依赖项注入(DI)容器,其他两类 单元测试框架和模仿工 ...

  3. ASP&period;NET &plus; MVC5 入门完整教程三 &lpar;下&rpar; ---MVC 松耦合

    建立松耦合组件 MVC 模式最重要的特性之一视他支持关注分离,希望应用程序中的组件尽可能独立,只有很少的几个可控依赖项.在理想的情况下,每个组件都不了解其他组件,而只是通过抽象接口来处理应用程序的其他 ...

  4. ASP&period;NET &plus; MVC5 入门完整教程三 &lpar;上&rpar; ---第一个MVC项目

    https://blog.csdn.net/qq_21419015/article/details/80420815 第一个MVC应用程序 1创建MVC项目 打开VS ,File--新建--项目,选择 ...

  5. ASP&period;NET &plus; MVC5 入门完整教程二

    原文链接:https://blog.csdn.net/qq_21419015/article/details/80318046 从前端UI开始 MVC分离的比较好,开发顺序没有特别要求,先开发哪一部分 ...

  6. ASP&period;NET &plus; MVC5 入门完整教程八 -—-- 一个完整的应用程序(下)

    https://blog.csdn.net/qq_21419015/article/details/80802931 SportsStore 1.导航 添加导航控件 如果客户能够通过产品列表进行分类导 ...

  7. ASP&period;NET &plus; MVC5 入门完整教程七 -—-- MVC基本工具(下)

    https://blog.csdn.net/qq_21419015/article/details/80493633 Visual Stdio 的单元测试

  8. ASP&period;NET &plus; MVC5 入门完整教程四---MVC 中使用扩展方法

    https://blog.csdn.net/qq_21419015/article/details/80433640 1.示例项目准备1)项目创建新建一个项目,命名为LanguageFeatures ...

  9. MVC5&plus;EF6 入门完整教程五

    上篇文章介绍了EF实现CRUD及一些基本的Html Helpers. 这次我们将会对之前的内容进行一些修改和重构: 引入Bootstrap样式,搭建几类共用的模板页,对UI进行一些改造 分类介绍Htm ...

随机推荐

  1. 整理一自己不怎么熟悉的HTML标签(会陆续更新)

    ---恢复内容开始--- 小白刚开始接触HTML和CSS,在学习过程中发现又遇到很多不认识的标签,于是就想把他们都记录下来,一来可加深记忆,二来也方便以后查阅,当然如果能帮助到你们也是很开心的啦! 1 ...

  2. UVa 156 (映射 map)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  3. 专题实验 PGA

    PGA : 是完全为 server process 服务的, 在 server process 创建时被分配到, 在server process 终止时被释放. 而且是非共享的, 只独立服务于这个se ...

  4. 实现系统函数time,获取当前时间与UTC的间隔

    因种种原因,最近很少上cnblogs了.刚写了一个实现time的函数,可以通过该函数获取当前时间与1970年1月1日 0时0分0秒的差值,精确到秒,可以用在某些没有时候使用time不正确而不得不调用硬 ...

  5. Centos&lpar;Linux&rpar; 根文件系统

    /下面的文件 /boot:系统启动相关的文件:如内核,inittrd ,以及MBR grub /dev :设备文件: 块设备:随机访问,数据块 如:USB 字符设备:线性访问,按字符为单位如:鼠标,按 ...

  6. HDU1251 统计难题 Trie树

    题目很水,但毕竟是自己第一道的Trie,所以还是发一下吧.Trie的更多的应用慢慢学,AC自动机什么的也慢慢学.... #include<iostream> #include<cst ...

  7. linux之sed命令

    原命令行: sudo sed -i 's/${storm.home}\/logs\/var\/log\/storm/g' /usr/share/storm/log4j/storm.log.proper ...

  8. jmeter导入DB数据再再优化

    前言:分享和规定命名规范后,各位测试人员一致认为这样jmeter的jmx文件限制太死,主要体现六方面: 第一:规定了一个jmx文件只能录入一个接口,这样会导致jmx文件很多 第二:导入DB的jmx文件 ...

  9. Celery 异步任务

    Celery https://www.cnblogs.com/DragonFire/p/10356615.html 介绍: Celery 是芹菜 Celery 是基于Python实现的模块, 用于执行 ...

  10. SQL Server进阶(十一)存储过程

    存储过程和函数的区别 存储过程是第一次编译之后就会被存储的下来的预编译对象,之后无论何时调用它都会去执行已经编译好的代码.而函数每次执行都需要编译一次.总结下来有下面几个区别: 基本不同: 函数必须有 ...