1.Razor的基本语法

@* 多行代码时需要包含在大括号内{}和每句代码后都需要加分号; *@
@{
ViewBag.Title = "Index";
ViewBag.Name = "Linq";
ViewBag.IsOk = false;
List<string> list = new List<string>() { "11", "22", "33", "44", "55", "66" };
ViewBag.Description = "<span style='font-weight: bold;'>迷失之牙</span>";
}
@* 单行代码时不需要分号结束 *@
<p>@DateTime.Now</p> <p>
名称:@("欢迎," + ViewBag.Name)
状态:@(ViewBag.IsOk ? "是" : "否")
@@Linq
</p> @if (ViewBag.IsOk != null && ViewBag.IsOk)
{
@:启用
}
else
{
@:停用
} @if (ViewBag.IsOk != null && ViewBag.IsOk)
{
<span>1.启用</span>
}
else
{
<span>2.停用</span>
} @if (ViewBag.IsOk != null && ViewBag.IsOk)
{
<text>
1234567
<span>1. 启用</span>
</text>
}
else
{
<text>
1234567
<span>2. 停用</span>
</text>
} <ul>
@foreach (var item in list)
{
<li>@item</li>
}
</ul>
@* 所有Razor语法输出的变量都会被HTML编码(HTMLEncode)后输出,如果想里面的HTML标签生效要调用Html.Raw方法 *@
@ViewBag.Description
@Html.Raw(ViewBag.Description) @{
<h2>混合例子 @(ViewBag.Name)</h2>
foreach (var item in list)
{
<li>@item</li>
} }

2.Razor的主板页面框架

2.1 Razor页面执行顺序
Controller回传给ViewResult给MvcHandler之后,MvcHandler会先设法找出对应的检视页面,然后Razor页面执行生命周期
被MvcHandler找到Razor页面会优先执行,然后检查这个View页面是否有Layout属性

2.2 关于_ViewStart
2.2.1/View/_ViewStart.cshtml文件会在/View/目录下任何View被截入前就先被截入,任何与Controller同名的View子目录下也能出现相同的_ViewStart.cshtml如此一来就可以不同的Controller对应不同的_ViewStart.cshtml

2.3 _Layout布局页面
2.3.1 _Layout.cshtml和一般的Razor的检视页面差不多,不同的地方是有2个Razor语法,分别是@RenderBody(预设坑洞)与@RenderSection(具名坑洞)

3.@helper辅助方法

Razor提供了一种很方便的语法,让你可以将View页面中部分内容或部分代码抽取出来,变成一个独立的辅助方法

<p>@ShowTime() </p>
@helper ShowTime()
{
@DateTime.Now;
}

4.@functions自定义函数

在@helper无法自定义属性,自能单纯地传入参数,然后格式化你想要呈现的样子直接输出。所以Razor还提供@functions自定义函数功能

<p>@ShowTime() </p>
@functions{
public IHtmlString ShowTime()
{
return new HtmlString(DateTime.Now.ToString());
}
}

5.@using引用参考资料类别

在Razor页面里面可以在页面最上方通过@using引用这一个View页面里面会用到的命名空间

@using MvcApplication1.Models
    <pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
<namespaces>
<!--也可以配置在配置文件里面-->
<add namespace="MvcApplication1.Models"/>
</namespaces>
</pages>

6.@model引用参考资料型别

        public ActionResult Index()
{
List<User> list = new List<User>();
list.Add(new User() { Name="",Age=});
list.Add(new User() { Name = "", Age = });
list.Add(new User() { Name = "", Age = });
return View(list);
}
@using MvcApplication1.Models

@{
var data = (IEnumerable<User>)Model;
}
<ul>
@foreach (var item in data)
{
<li>@item.Name</li>
}
</ul>
@using MvcApplication1.Models
@model IEnumerable<User>
<ul>
@foreach (var item in Model)
{
<li>@item.Name</li>
}
</ul>

7.布局页

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
</head>
<body>
<div id="header">
@if (IsSectionDefined("header"))
{
@RenderSection("header", false)
}
else
{
<h1>没有填充@RenderSection("header", false)</h1>
}
</div>
<div>
@Html.Partial("_LayoutUser")
</div>
<div>
@RenderBody()
</div>
<div id="footer">
@RenderSection("footer",false)
</div> </body>
</html>
@{
ViewBag.Title = "About";
Layout = "~/Views/Shared/_LayoutTest.cshtml";
} <h1>我是@RenderBody()</h1> @section footer {
<h1>我是@RenderSection("footer",false)</h1>
}

ASP.NET MVC中的Razor语法的更多相关文章

  1. ASP.net MVC入门及Razor语法

    一.MVC入门: 1.MVC简介 约定大于配置 2.MVC访问流程 csthml模板(razor模板)就是简化HTML的拼接的模板,最终还是生成html给浏览器显示,不能直接访问cshtml文件. 二 ...

  2. ASP.NET Core 5.0 MVC中的 Razor 页面 介绍

    Razor 是一个用于将基于服务器的代码嵌入到网页中的标记语法. Razor语法由 Razor 标记.c # 和 HTML 组成. 通常包含 Razor 的文件的扩展名 cshtml Razor 语法 ...

  3. 如何在 ASP.NET MVC 中集成 AngularJS(2)

    在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩.应用程序版本自动刷新和工程构建等内容. 下面介绍如何在 ASP.NET MVC 中 ...

  4. 在 ASP.NET MVC 中充分利用 WebGrid (microsoft 官方示例)

    在 ASP.NET MVC 中充分利用 WebGrid https://msdn.microsoft.com/zh-cn/magazine/hh288075.aspx Stuart Leeks 下载代 ...

  5. 如何在 ASP.NET MVC 中集成 AngularJS(1)

    介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术.例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 REST 的 Web API 服务.另外,还有最新的数据库技术.最新 ...

  6. ASP.NET Core中使用Razor视图引擎渲染视图为字符串

    一.前言 在有些项目需求上或许需要根据模板生产静态页面,那么你一样可以用Razor语法去直接解析你的页面从而把解析的页面生成静态页,这样的使用场景很多,不限于生成静态页面,视图引擎为我们提供了模型到视 ...

  7. Asp.net mvc 中View 的呈现(二)

    [toc] 上一节介绍了 Asp.net mvc 中除 ViewResult 外的所有的 ActionResult,这一节介绍 ViewResult. ViewResultBase ViewResul ...

  8. Vue在ASP.NET MVC中的进行前后端的交互

    Vue在ASP.NET MVC中的进行前后端的交互 Preface: 由于最近在研究前端相关的技术,作为前端非常优秀的框架Vue,个人在学习的过程中遇到一些问题,网上相关资料有限,所以在这这里总结一下 ...

  9. ASP.NET Core中使用Razor视图引擎渲染视图为字符串(转)

    一.视图渲染说明 在有些项目需求上或许需要根据模板生产静态页面,那么你一样可以用Razor语法去直接解析你的页面从而把解析的页面生成静态页,这样的使用场景很多,不限于生成静态页面,视图引擎为我们提供了 ...

随机推荐

  1. ssh(安全外壳层)

    SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是目前较可靠,专为远程登录会 ...

  2. Android九点图(Nine-Patch)制作及应用

    你可能之前还没有听说过Nine-Patch这个名词,它是一种被特殊处理过PNG图片,能够指定哪些区域可以被拉伸而哪些区域不可以. 现在我将手把手教你如何去制作一张九点PNG图像. ---------- ...

  3. 怎样在myEclipse中使用debug调试程序?

    怎样在myEclipse中使用debug调试程序? 最基本的操作是:     1.首先在一个java文件中设断点,然后debug as-->open debug Dialog,然后在对话框中选类 ...

  4. Qt5 托盘模仿qq闪烁,弹消息框实现

    在别人代码基础上做的,课设刚好用上了,贴出来分享Qt5.5.1实现. 图片自己找. #ifndef DIALOG_H #define DIALOG_H #include <QDialog> ...

  5. net-snmp5.7.3移植到arm-linux平台

    net-snmp5.7.3移植到arm-linux平台 本次交叉编译在ubuntu 15.04 64位系统下进行. 准备工作 在编译移植前有几项准备工作需要完成. 1下载net-snmp 5.7.3源 ...

  6. 将kindeditor在线编辑器制作成smarty插件

    在web开发中,在线编辑器是经常要用到的功能模块,虽说配置在线编辑器没有多大难度,但是每一次编写重复的代码,总是让人感觉不爽. 本篇,就来讲解一下,如何将kindeditor制作成smarty的一个自 ...

  7. [ruby on rails] 深入(1) ROR的一次request的响应过程

    示意图 即: 1.  浏览器发起请求 2. Routes对请求进行一个url映射,交给对应的Controller来处理 3/4. Contoller从Model中获取数据(或者操作数据) 5. 返回给 ...

  8. 谷歌Chrome浏览器开发者工具的基础功能

    上一篇我们学习了谷歌Chrome浏览器开发者工具的基础功能,下面介绍的是Chrome开发工具中最有用的面板Sources.Sources面板几乎是最常用到的Chrome功能面板,也是解决一般问题的主要 ...

  9. PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)

    /*常用的字符串输出函数 * * echo() 输出字符串 * print() 输出一个或多个字符串 * die() 输出一条信息,并退出当前脚本 * printf() 输出格式化字符串 * spri ...

  10. 在中文windows下使用pywinauto进行窗口操作

    这两天开始接触pywinauto,听说百度的自动化QA也用这个模块,于是来了兴趣,但网上的教程很少,而且基本上都是拿官方的notepad来说,首先中文菜单的支持是问题,其次各种操作也没有写清楚,阅读官 ...