为简单起见,新建一个空的web工程,再新建一个MVC的视图(.cshtml),因为WP是单页面模型,所以以后就在这个页面中进行试验。

Razor语法简介:

  1. 变量可用var或者其确切类型声明。

遍历foreach:

  1. <ul>
  2. @foreach (var i in Request.ServerVariables)
  3. {
  4. <li>@i</li>
  5. }
  6. </ul>

统一的布局:

将相似的页眉、页脚写在单独的布局文件中,需要时导入即可。

  1. <body>
  2. <!--导入页眉、页脚:RenderPage-->
  3. @RenderPage("header.cshtml")
  4. <h1>Hello Web Pages</h1>
  5. <p>This is a paragraph</p>
  6. @RenderPage("footer.cshtml")
  7. </body>
  8.  
  9. <!DOCTYPE html>
  10. <html>
  11. <body>
  12. <!--页眉-->
  13. <h1>This is header.</h1>
  14. </body>
  15. </html>
  16.  
  17. <!DOCTYPE html>
  18. <html>
  19. <body>
  20. <!--页脚-->
  21. <h6>This is footer.</h6>
  22. </body>
  23. </html>

除了页眉、页脚之外,还可以引用部分相同的内容:

  1. <body>
  2. <!--布局网页,只是将框架做出来,而不是内容页面,内容部分用RenderBody顶替-->
  3. <!--使用此布局的页面,用Layout导入。-->
  4. <!--此时在内容页面,Layout指令会将指定的布局页导入到内容页面:就是把内容页当前成RenderBody,然后按照布局页的格式在RenderBody前后布局-->
  5. <p>This is header text</p>
  6. @RenderBody()
  7. <p>© 2012 W3School. All rights reserved.</p>
  8. </body>
  9.  
  10. <body>
  11. <!--内容页面-->
  12. @{Layout = "body.cshtml";}
  13. <h1>Welcome to W3Schools</h1>
  14. </body>

防止代码泄露:

在 ASP.NET 中,名称以下划线开头的文件,例如"_header"无法从服务器中get到。因此可以将布局页面等文件以下划线"_"开头重命名。

隐藏敏感信息:

把信息数据保存在独立文件"_AppStart.cshtml"中(站点启动之前,执行其中代码,即启动代码和全局变量的初始化:只会在站点第一次启动时执行,即只执行一次)——_PageStart:在当前文件夹中如果有_PageStart.cshtml文件,那么每一次在访问这个文件夹中的任意页面时,都会先执行_PageStart页面中的代码。但也可在_PageStart页面中使用RunPage()规定在何处运行被访问的页面(而不是_PageStart)。

  1. <body>
  2. @WebMail.UserName
  3. </body>
  4.  
  5. <!--整个_AppStart页面-->
  6. @{
  7. WebMail.SmtpServer = "mailserver.example.com";
  8. WebMail.EnableSsl = true;
  9. WebMail.UserName = "username@example.com";
  10. WebMail.Password = "your-password";
  11. WebMail.From = "your-name-here@example.com";
  12. }

WP常用的逻辑文件夹结构:

  • "Account" 文件夹包含登录和安全文件
  • "App_Data" 文件包含数据库和数据文件
  • "Shared" 文件夹包含通用文件(比如布局和样式文件)

绝对路径(磁盘上)的目录:例如C:\,相对路径(网站上)的目录是 /(斜杠)。ASP.NET 提供三种处理文件夹路径的工具:~ 操作符、Server.MapPath 方法以及 Href 方法。

  1. <!--~:虚拟根目录-->
  2. @RenderPage("~/View/_header.cshtml")
  3. <!--Server.MapPath:参数(正确的相对路径)、返回(绝对路径:因为访问数据文件时,必须用完整的绝对路径)-->
  4. @Server.MapPath("_header.cshtml") <!--或者写成~/View/_header.cshtml-->
  5. <!--Href 把相对路径转换为浏览器能够理解的路径(浏览器无法理解 ~ 操作符;但是浏览器明明要认上一级目录"..",为啥不用这个)-->
  6. @{ var imgPath = "~/Images/2.png";}
  7. <img src="@Href(imgPath)" />
  8. <img src="@imgPath" />

读取输入:

  1. @{
  2. var message = "";
  3. if(IsPost)
  4. {
  5. message = Request["message"];
  6. }
  7. }
  8. @message
  9. <form method="post">
  10. <input type="text" name="message" />
  11. <input type="submit" value="Submit" />
  12. </form>

所有页面使用同一个对象Page,有方法有属性:

添加自定义的属性:

  1. @{ Page.Title = "Index Page";}
  2. @Page.Title<br />
  3. @RenderPage("_header.cshtml")
  4.  
  5. <!--_header页面-->
  6. <body>
  7. @Page.Title
  8. </body>

处理文本文件:

存储数据的文本文件通常称为平面文件(flat files)。常见的文本文件格式是 txt、xml 以及 csv。下面读取一个文本文件:

新建一个App_Data文件夹,再新建"Persons.txt":

  1. @{
  2. //var dataFile = Server.MapPath("~/App_Data/Persons.txt");
  3. //var dataFile = Server.MapPath("~/App_Data/Persons.csv");
  4. var dataFile = Server.MapPath("~/App_Data/Persons.xml");
  5. Array userData = File.ReadAllLines(dataFile);
  6. }
  7. <h1>Reading Data from a File</h1>
  8. @foreach (string dataLine in userData)
  9. {
  10. foreach (string dataItem in dataLine.Split(','))
  11. {@dataItem <text> </text>}
  12. <br />
  13. }

ASP.NET —— Web Pages的更多相关文章

  1. 如何在ASP.NET Web站点中统一页面布局[Creating a Consistent Layout in ASP.NET Web Pages(Razor) Sites]

    如何在ASP.NET Web站点中统一页面布局[Creating a Consistent Layout in ASP.NET Web Pages(Razor) Sites] 一.布局页面介绍[Abo ...

  2. Displaying Data in a Chart with ASP.NET Web Pages (Razor)

    This article explains how to use a chart to display data in an ASP.NET Web Pages (Razor) website by ...

  3. 五张图概括 什么是 ASP 、 ASP.NET (Web Pages,Web Forms ,MVC )

    当你看懂下面这五张图,我相信你对于学习.NET Web开发路线将不陌生!                                               来源: http://www.w3 ...

  4. ASP.NET Web Pages 的冲突版本问题

    随着VS版本和.NET MVC版本.EF的版本的不断更新,虽然很多功能随着版本的提升而更完善,但对于旧版本开发的软件就有点悲催了,或许很多开发者都遇到类似的问题! 最近有一个项目是用.NET MVC3 ...

  5. ASP.NET Web Pages:C# 和 VB 实例

    ylbtech-.Net-ASP.NET Web Pages:C# 和 VB 实例 1.返回顶部 1. ASP.NET Web Pages - C# 和 VB 实例 通过 C# 和 Visual Ba ...

  6. ASP.NET Web Pages:发布网站

    ylbtech-.Net-ASP.NET Web Pages:发布网站 1.返回顶部 1. ASP.NET Web Pages - 发布网站 学习如何在不使用 WebMatrix 的情况下发布 Web ...

  7. ASP.NET Web Pages:PHP

    ylbtech-.Net-ASP.NET Web Pages:PHP 1.返回顶部 1. ASP.NET Web Pages - PHP PHP 开发人员请注意,Web Pages 可以用 PHP 编 ...

  8. ASP.NET Web Pages:WebMail 帮助器

    ylbtech-.Net-ASP.NET Web Pages:WebMail 帮助器 1.返回顶部 1. ASP.NET Web Pages - WebMail 帮助器 WebMail 帮助器 - 众 ...

  9. ASP.NET Web Pages:Chart 帮助器

    ylbtech-.Net-ASP.NET Web Pages:Chart 帮助器 1.返回顶部 1. ASP.NET Web Pages - Chart 帮助器 Chart 帮助器 - 众多有用的 A ...

  10. ASP.NET Web Pages:WebGrid 帮助器

    ylbtech-.Net-ASP.NET Web Pages:WebGrid 帮助器 1.返回顶部 1. ASP.NET Web Pages - WebGrid 帮助器 WebGrid - 众多有用的 ...

随机推荐

  1. MongoDB优化,建立索引实例及索引机制原理讲解

    MongoDB优化,建立索引实例及索引机制原理讲解 为什么需要索引? 当你抱怨MongoDB集合查询效率低的时候,可能你就需要考虑使用索引了,为了方便后续介绍,先科普下MongoDB里的索引机制(同样 ...

  2. Installing Android Studio

    To set up Android Studio on Windows: Launch the .exe file you just downloaded. Follow the setup wiza ...

  3. spark与kafka集成进行实时 nginx代理 这种sdk埋点 原生日志实时解析 处理

    日志格式202.108.16.254^A1546795482.600^A/cntv.gif?appId=3&areaId=8213&srcContId=2535575&area ...

  4. centos7 安装zabbix

    一.安装mysql 1.[root@iZ28gvqe4biZ ~]# rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.n ...

  5. Golang字符串格式化

    Go对字符串格式化提供了良好的支持.下面我们看些常用的字符串格式化的例子. package main import ( "fmt" "os" ) type po ...

  6. P4219 [BJOI2014]大融合(LCT)

    P4219 [BJOI2014]大融合 对于每个询问$(u,v)$所求的是 ($u$的虚边子树大小+1)*($v$的虚边子树大小+1) 于是我们再开个$si[i]$数组表示$i$的虚边子树大小,维护一 ...

  7. P3369 【模板】普通平衡树(splay)

    P3369 [模板]普通平衡树 就是不用treap splay板子,好好背吧TAT #include<iostream> #include<cstdio> #include&l ...

  8. 深入理解 Vue 组件

    深入理解 Vue 组件 组件使用中的细节点 使用 is 属性,解决组件使用中的bug问题 <!DOCTYPE html> <html lang="en"> ...

  9. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem F (Codeforces 831F) - 数论 - 暴力

    题目传送门 传送门I 传送门II 传送门III 题目大意 求一个满足$d\sum_{i = 1}^{n} \left \lceil \frac{a_i}{d} \right \rceil - \sum ...

  10. 数据库 --- 4 多表查询 ,Navicat工具 , pymysql模块

    一.多表查询 1.笛卡儿积 查询 2.连接 语法: ①inner    显示可构成连接的数据 mysql> select employee.id,employee.name,department ...