ASP.NET 教程之Web Pages I

来源:互联网 发布:24网络交换机怎么连接 编辑:程序博客网 时间:2024/04/28 01:20

一.ASP.NET

ASP.NET是一个开发框架,是新一代的 ASP(Active Server Pages), 支持三种开发模式:Web Pages单页面模型,MVC模型视图控制器和Web Forms事件驱动模型


1.Web Pages

最简单的ASP.NET模型,类似PHP和ASP,内置了用于数据库、视频、社交媒体等的模板和帮助器


2.MVC(Model View Controller)

将web应用程序分为三种不同的组件:针对数据的模型,针对现实的视图,针对输入的控制器


3.Web Forms

传统ASP.NET事件驱动开发模型,添加了服务器控件、服务器事件和服务器代码的网页


二.Web Pages简介

1.Web Pages用于创建 ASP.NET 网站和 web 应用程序,是最简单的ASP.NET网页开发编程模型。


2.它提供了一种简单的方法将 HTML、CSS、JavaScript 以及服务器代码结合起来:

·易于学习、阅读和使用

·围绕单一网页进行构建

·类似 PHP 和 ASP

·服务器脚本使用 Visual Basic 或 C#

·对 HTML、CSS、JavaScript 的完全控制


3.Web Pages 通过可编程的 Web Helpers 进行扩展,包括数据库、视频、图像、社交网络等等。


三.添加Razor代码

1.Razor简介

Razor 是一种向网页添加基于服务器的代码的标记语法,类似 ASP 和 PHP 的服务器端标记语法,拥有传统 ASP.NET 标记的能力,但是更易学习,更易使用。


例如:@ 标记的 Razor 代码,是检测服务器上的当前时间,然后显示出来。(可以指定格式选项,或者仅仅以默认格式显示)

<!DOCTYPE html>
<html>
<body>
     <h1>Hello Web Pages</h1> 
     <p>The time is @DateTime.Now</p>
</body>
</html>

运行结果



2.C# 的主要 Razor 语法规则:

·Razor 代码块由 @{ ... } 包围

·行内表达式(变量和函数)以 @ 开始

·代码语句以分号结束

·变量通过 var 关键词进行声明

·字符串用引号来包围

·C# 代码对大小写敏感

·C# 文件的扩展名是 .cshtml


3.例如

<html>
<body>
<!-- Single statement block -->
@{ var myMessage = "Hello World"; }

<!-- Inline expression or variable -->
<p>The value of myMessage is: @myMessage</p> 

<!-- Multi-statement block -->
@{
var greeting = "Welcome to our site!";
var weekDay = DateTime.Now.DayOfWeek;
var greetingMessage = greeting + " Here in Huston it is: " + weekDay;
}

<p>The greeting is: @greetingMessage</p>
</body>
</html>

运行结果



四.web pages layout页面布局

1.content blocks

例如,@RenderPage()方法在网页上添加页眉和页脚等内容

<html>
<body>
@RenderPage("header.cshtml")
<h1>Hello Web Pages</h1> 
<p>This is a paragraph</p>
@RenderPage("footer.cshtml")
</body>
</html>


运行结果



2.using a layout page

使用页面布局,需要调用@RenderBody()方法,而且网页要以Layout指令开头

例如一个layout page

<html>
<body>
<p>This is header text</p>
@RenderBody()
<p>&copy; 2014 W3Schools. All rights reserved.</p>
</body>
</html>


任意网页

@{Layout="Layout.cshtml";}

<h1>Welcome to W3Schools</h1>

<p>
Lorem ipsum dolor sit amet, consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laborisnisi ut aliquip ex ea commodo consequat.
</p>


运行结果



3.防止代码泄露

名称以下划线开头的文件无法通过 web 来浏览,所以,如果你希望禁止用户查看内容块或布局文件,就可以重新命名

  _header.cshtm

  _footer.cshtml

  _Layout.cshtml


4.隐藏敏感信息

敏感信息例如数据库密码、电脑密码等,隐藏它们常用方法是把这些信息保存在名为 "_AppStart" 的独立文件中。

例如一个文件名为_AppStart.cshtml,它里面的代码如下

@{
WebMail.SmtpServer = "mailserver.example.com";
WebMail.EnableSsl = true;
WebMail.UserName = "username@example.com";
WebMail.Password = "your-password";
WebMail.From = "your-name-here@example.com";
}


五.web pages folders文件夹

1.logical folder structure

下图为asp.net网页的典型网站文件夹结构

"Account" 文件夹包含登录和安全文件

"App_Data" 文件包含数据库和数据文件

"Images" 文件夹包含图片

"Scripts" 文件夹包含浏览器脚本

"Shared" 文件夹包含通用文件(比如布局和样式文件)


2.physical folder structure

例如,上面这个网站的 "Images" 文件夹的物理结构在计算机上类似这样:

C:\Johnny\Documents\MyWebSites\Demo\Images 


3.virtual and physical names

例如,上面这个网站的web 图片的virtual name虚拟名称类似这样:"Images/pic31.jpg"。

但是physical name物理名称类似这样 "C:\Johnny\Documents\MyWebSites\Demo\Images\pic31.jpg"。


4.URLs and paths

URL用于从web访问文件

 https://www.w3schools.com/html/html5_intro.asp


URL在服务器上对应的文件是

C:\MyWebSites\w3schools\html\html5_intro.asp


虚拟路径是代表物理路径的简写形式。如果您使用虚拟路径,就能够在不更新路径的情况下将网页移动到不同的域名(或服务器)。

URLhttps://www.w3schools.com/html/html5_intro.aspServer namew3schoolsVirtual path/html/html5_intro.aspPhysical pathC:\MyWebSites\w3schools\html\html5_intro.asp

磁盘驱动器上的根目录写作: C:\,但是网站上的根目录是 /

web 文件夹的虚拟路径(几乎)永远不会与物理文件夹相同

在您的代码中,根据代码内容的不同,可能会同时引用物理路径和虚拟路径

ASP.NET 提供三种处理文件夹路径的工具:~ 操作符、Server.MapPath 方法以及 Href 方法


5.~操作符

如需在编程代码中规定虚拟根目录,请使用 ~ 操作符


如果您使用 ~ 操作符,而不是路径,就能够在不改变任何代码的情况下,将网站移动到不同的文件夹或位置

var myImagesFolder = "~/images";
var myStyleSheet = "~/styles/StyleSheet.css";


6.Server.MapPath方法

Server.MapPath 方法将虚拟路径 (/default.cshtml) 转换为服务器能够理解的物理路径 (C:\Johnny\MyWebSited\Demo\default.cshtml)。


当需要打开位于服务器上的数据文件时,您就会用到该方法(数据文件只能通过完整的物理路径来访问)

var pathName = "~/dataFile.txt";
var fileName = Server.MapPath(pathName);


7.Href方法

Href 方法把代码中的路径转换为浏览器能够理解的路径(浏览器无法理解 ~ 操作符)。

您使用 Href 方法来创建指向资源(比如图片和 CSS 文件)的路径。(Href 方法属于 WebPage 对象的方法)


您会经常在 HTML <a>、<img> 以及 <link> 元素中用到该方法

@{var myStyleSheet = "~/Shared/Site.css";}

<!-- This creates a link to the CSS file. -->

<link rel="stylesheet" type="text/css" href="@Href(myStyleSheet)" />

<!-- Same as : -->

<link rel="stylesheet" type="text/css" href="/Shared/Site.css" />


六.global pages全局页面

1.before web startup: _AppStart

大多数服务器端代码都是在独立的网页中编写的。

不过,通过在站点根目录中创建名为 _AppStart 的页面,你能够在站点启动前就执行启动代码(startup code),而且ASP.NET 会在站点内的任何页面被请求之前首先运行这个页面。

通常 _AppStart 用于启动代码和全局值的初始化,比如计数器和全局名称。

注释 1:_AppStart 的文件扩展名应与网页相同,比如 _AppStart.cshtml。

注释 2:_AppStart 有下划线前缀。正因如此,用户才无法直接查看该文件。


2.before every page:_PageStart

就像在站点启动前运行 _AppStart 那样,你能够在每个文件夹中的任意页面之前运行代码

对于 web 中的每个文件夹,能够添加名为 _PageStart 的文件

通常 _PageStart 用于设置文件夹中所有页面的布局文件,或者在运行页面之前检查用户登录


3.how does it work

当请求到来时,ASP.NET 检查 _AppStart 是否存在。如果存在,并且这是对站点的第一次请求,则运行 _AppStart。

然后 ASP.NET 检查 _PageStart 是否存在。如果存在,则在被请求页面前运行 _PageStart。

如果你在 _PageStart 内部引用了对 RunPage() 的调用,那么你可以规定在何处运行被请求的页面。否则,_PageStart 在被请求页面之前运行。




0 0