博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
八:Razor(MVC框架视图引擎)
阅读量:5458 次
发布时间:2019-06-15

本文共 2629 字,大约阅读时间需要 8 分钟。

模型对象

1:新建一个示例的MVC项目

2:在Models文件夹下新建类Product

namespace TestDemoMVC.Models{    public class Product    {        public int ProductID { get; set; }        public string Name { get; set; }        public string Description { get; set; }        public string Category { get; set; }        public decimal Price { get; set; }    }}

3:修改控制器HomeController中代码如下

using System.Web.Mvc;using TestDemoMVC.Models;namespace TestDemoMVC.Controllers{    public class HomeController : Controller    {        Product product = new Product()        {            ProductID = 1,            Name = "C#",            Category = ".NET",            Description = "Program Language",            Price = 102M        };        public ActionResult Index()        {            return View(product);        }    }}

4:修改视图Index.cshtml

@model TestDemoMVC.Models.Product@{    Layout = null;}    
Razor Example
@Model.Name

说明

  • Razor语句是以@字符开头
  • @model语句声明了通过动作方法传递给视图模型对象的类型。通过@Model就可以引用视图模型对象
  • Razor代码块是以@开头大括号{}包含的内容。

布局

1:创建布局

在Views文件夹下新建View,命名为_TestLayout.cshtml。注意这里第一个字符是半角下划线

修改内容如下

    

布局前

@RenderBody()

布局后

2:再修改Views/Home文件夹下的文件Index.cshtml中的Layout部分

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

3:运行可以看到结果如下

布局相当于一个模板,这样对于多个页面来说,不需要给每个页面都单独设计布局,只需要统一引用布局页面。整个应用就会是统一的样式。

视图起始文件

如果我们把Index.cshtml的Layout指定删除,及不指定为null。那么运行结果可以发现会有示例的默认布局。

这是MVC框架默认会查找Views下一个文件_ViewStart.cshtml文件。也就是说如果不想指定布局,页面必须显式的指定布局为空,即null

Razor表达式

动作方法和视图

动作方法:向视图传递视图模型,但是不会格式化数据(格式化的含义是如何显示)

视图:用视图模型对象向用户表现内容,但是不会修改视图模型对象的任何内容

插入数据值方法一:使用视图模型。方法二:使用ViewBag表达式

1:在HomeController中修改Index方法

public ActionResult Index()        {            ViewBag.Test = "TestString";            ViewBag.MyNumber = 10000;            return View(product);        }:

2:修改Index.cshtml文件中的body部分

    
@Model.Name
@ViewBag.Test
@ViewBag.MyNumber
@ViewBag.NoExist

这里故意引用一个不存在的数据NoExist。运行后页面可以正常显示

3:在Index.cshtml的Layout定义部分修改内容如下

@{    ViewBag.NoExist="Test NoExist String";    Layout = "~/Views/_TestLayout.cshtml";}

运行后得到结果如下

 4:使用条件语句

修改Index.cshtml中body的内容

    
@Model.Name
@ViewBag.Test
@ViewBag.MyNumber
@ViewBag.NoExist
@if(Model.Price>100) { @:太贵了 } else { @:挺便宜,买了 }

可以看到@包含的内容几乎和正常的书写代码一致

5:使用循环语句

在body中新增下面内容

@{int total = 0;        for(int i=0;i<=100;i++)        {            total += i;        }        @:Total:@total    }

运行结果

6:处理命名空间

如果需要引用某个命名空间,可以在页面的开始部分使用

@using 命名空间

这样的语句

转载于:https://www.cnblogs.com/yuanhaowen/p/9887969.html

你可能感兴趣的文章
SQL SERVER Transactional Replication中添加新表如何不初始化整个快照
查看>>
html中id name class的区别(转)
查看>>
python学习--sys.argv
查看>>
团队作业
查看>>
cocos2d-x内存管理
查看>>
金玉良言
查看>>
BZOJ 4472 [Jsoi2015]salesman(树形DP)
查看>>
Reverse Linked List(反转单向链表)
查看>>
方法执行一次js
查看>>
《软件工程》课程心得体会2
查看>>
python中迭代器的使用得到元素的索引
查看>>
Java基础笔记(十一)—— 字符串与数组
查看>>
CPU 缓存(Cache)
查看>>
微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法.
查看>>
『参考』.net CF组件编程(2)——为组件添加事件
查看>>
幸福的标准
查看>>
c语言进制转化
查看>>
快还要更快,让PHP 7 运行更加神速
查看>>
[Machine Learning] Learning to rank算法简介
查看>>
[Reinforcement Learning] Policy Gradient Methods
查看>>