• ASP.NET初识


    一、简介

    ASP.NET是一个使用HTML、CSS、JavaScript和服务器脚本创建网页和网站的开发框架

    ASP.NET支持三种不同的开发模式:Web Pages(Web 页面)、MVC(Model View Controller 模型-视图-控制器)、Web Forms(Web 窗体)

    二、Web Pages模式

    围绕着单一的网页创建;全HTML、CSS、JavaScript控制。

    Web Pages 内置了数据库、视频、图形、社交媒体和其他更多的Web Helpers,因此很容易扩展。

    1、Web Pages Razor

    • Razor 是一种将基于服务器的代码添加到网页中的标记语法
    • Razor 具有传统 ASP.NET 标记的功能,但更容易使用并且更容易学习
    • Razor 是一种服务器端标记语法,与 ASP 和 PHP 很像
    • Razor 支持 C# 和 Visual Basic 编程语言

    主要的 Razor C# 语法规则

    • Razor 代码块包含在 @{ ... } 中
    • 内联表达式(变量和函数)以 @ 开头
    • 代码语句用分号结束
    • 变量使用 var 关键字声明
    • 字符串用引号括起来
    • C# 代码区分大小写
    • C# 文件的扩展名是 .cshtml

    主要的 Razor VB 语法规则

    • Razor 代码块包含在 @Code ... End Code 中
    • 内联表达式(变量和函数)以 @ 开头
    • 变量使用 Dim 关键字声明
    • 字符串用引号括起来
    • VB 代码不区分大小写
    • VB 文件的扩展名是 .vbhtml

    2、Web Pages 布局

    (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) Layout Page 布局页:一个布局页包含了网页的结构,而不是内容。布局页中使用@RenderBody()方法嵌入内容页,每一个内容页都必须以布局指令开始。

    布局页:

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

    任何网页;

    @{Layout="Layout.cshtml";}                  //此处即引入上面的布局页(布局指令),将下面的内容嵌入在布局页的@RenderBody()处
    <h1>Welcome to w3cschool.cn</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、防止文件被浏览

    在ASP.NET中将文件名以_开头可以防止这些文件在网上被浏览。在 ASP.NET 中,隐藏敏感信息(数据库密码、电子邮件密码等等)最通用的方法是将这些信息保存在一个名为"_AppStart"的单独的文件中。

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

    4、Web Page对象

    某些 Page 对象方法

    方法描述
    href 使用指定的值创建 URL。
    RenderBody() 呈现不在布局页命名区域的内容页的一部分。
    RenderPage(page) 在另一个页面中呈现某一个页面的内容。
    RenderSection(section) 呈现布局页命名区域的内容。
    Write(object) 将对象作为 HTML 编码字符串写入。
    WriteLiteral 写入对象时优先不使用 HTML 编码。

    某些 Page 对象属性

    属性描述
    isPost 如果客户端使用的 HTTP 数据传输方法是 POST 请求,则返回 true。
    Layout 获取或者设置布局页面的路径。
    Page 提供了对页面和布局页之间共享的数据的类似属性访问。
    Request 为当前的 HTTP 请求获取 HttpRequest 对象。
    Server 获取 HttpServerUtility 对象,该对象提供了网页处理方法。

    5、显示文本文件中的数据 

    @{
    var dataFile = Server.MapPath("~/App_Data/Persons.txt");
    Array userData = File.ReadAllLines(dataFile);
    }

    <!DOCTYPE html>
    <html>
    <body>

    <h1>Reading Data from a File</h1>
    @foreach (string dataLine in userData) 
    {
    foreach (string dataItem in dataLine.Split(',')) 
    {@dataItem <text>&nbsp;</text>}
    <br />
    }
    </body>
    </html>

    详解:使用Server.MapPath()找到准确的文本文件的路径;使用ReadAllLines()打开文本文件,并读取文件的所有行到一个数组中;foreach将数组中每个数据行的数据项显示出来。

    6、Web Pages 图表

    (1)根据数组数据显示图表

    @{ 
    var myChart = new Chart( 600, height: 400) 
    .AddTitle("Employees") 
    .AddSeries(chartType: "column",
    xValue: new[] { "Peter", "Andrew", "Julie", "Mary", "Dave" }, 
    yValues: new[] { "2", "6", "4", "5", "3" }) 
    .Write();
    }

    方法注解:new Chart() 创建一个新的图表并设置它的宽度和高度;

         AddTitle() 添加图表标题;

         AddSeries() 向图表中增加数据;

         chartType 参数定义图表类型;

         xValue 参数定义X轴的名称,yValue 参数定义Y轴的名称;

         Write() 显示图表。

    (2)根据数据库创建图表

    @{ 
    var db = Database.Open("SmallBakery"); 
    var dbdata = db.Query("SELECT Name, Price FROM Product"); 
    var myChart = new Chart( 600, height: 400) 
    .AddTitle("Product Sales") 
    .DataBindTable(dataSource: dbdata, xField: "Name")
    .Write();
    }

    注解:var db = Database.Open() 打开数据库;

       var dbdata = db.Query() 执行数据库查询并将结果保存在dbdata 中;

       DataBindTable() 将数据源绑定到图表;DataBindTable() 更容易使用,AddSeries() 更加灵活,可以更加明确的指定图表和数据。

    (3)根据XML数据创建图表

    @using System.Data;

    @{
    var dataSet = new DataSet();
    dataSet.ReadXmlSchema(Server.MapPath("data.xsd"));
    dataSet.ReadXml(Server.MapPath("data.xml"));
    var dataView = new DataView(dataSet.Tables[0]);
    var myChart = new Chart( 600, height: 400)
    .AddTitle("Sales Per Employee")
    .AddSeries("Default", chartType: "Pie",
    xValue: dataView, xField: "Name",
    yValues: dataView, yFields: "Sales")
    .Write();}
    }

    ASP.NET 类参考手册

    方法描述
    AsBool(), AsBool(true|false) 转换字符串值为布尔值(true/false)。如果字符串不能转换为true/false,则返回 false 或者其他规定的值。
    AsDateTime(), AsDateTime(value) 转换字符串值为日期/时间。返回 DateTime。如果字符串不能转换为日期/时间,则返回 MinValue 或者其他规定的值。
    AsDecimal(), AsDecimal(value) 转换字符串值为十进制值。如果字符串不能转换为十进制值,则返回 0.0 或者其他规定的值。
    AsFloat(), AsFloat(value) 转换字符串值为浮点数。如果字符串不能转换为浮点数,则返回 0.0 或者其他规定的值。
    AsInt(), AsInt(value) 转换字符串值为整数。如果字符串不能转换成整数,则返回 0 或者其他规定的值。
    Href(path [, param1 [, param2]]) 从带有可选的附加路径部分的本地文件路径创建一个浏览器兼容的 URL。
    Html.Raw(value) Renders value 呈现为 HTML 标记,而不是呈现为 HTML 编码输出。
    IsBool(), IsDateTime(), IsDecimal(), IsFloat(), IsInt() 如果该值可以从字符串转换为指定的类型,则返回 true。
    IsEmpty() 如果对象或者变量没有值,则返回 true。
    IsPost 如果请求是 POST,则返回 true。(初始请求通常是 GET。)
    Layout 规定布局页面的路径应用到此页面。
    PageData[key], PageData[index], Page 在当前请求的页面、布局页面、部分页面之间包含共享数据。您可以使用动态页面来对相同的数据进行属性访问。
    RenderBody() (Layout pages) 呈现没有在布局页面任何命名区域的内容页的内容Renders the content of a content page that is not in any named sections.
    RenderPage(path, values
    RenderPage(path[, param1 [, param2]])
    呈现使用了规定的路径和可选的额外数据的内容页。您可以通过 position(实例 1)或者 key(实例 2)从 PageData 获取额外参数的值。
    RenderSection(sectionName [, required = true|false]) (Layout pages) 呈现一个有名字的内容区域。设置 required 让一个区域为必需非可选的。
    Request.Cookies[key] 获取或者设置 HTTP cookie 的值。
    Request.Files[key] Gets 在当前请求中上传的文件。
    Request.Form[key] 获取在表单中 post 的数据(作为字符串)。Request.Form 和 Request.QueryString 都要求[key] 检查。
    Request.QueryString[key] 获取 URL 查询字符串中规定的数据。Request.Form 和 Request.QueryString 都要求[key] 检查。
    Request.Unvalidated(key
    Request.Unvalidated().QueryString|Form|Cookies|Headers[key]
    有选择地禁用请求验证(表单元素、查询字符串值、cookie、header 值)。请求验证默认是开启的,防止用户提交标记或者其他潜在的危险内容。
    Response.AddHeader(namevalue) 在应答中添加一个 HTTP 服务器响应头。
    Response.OutputCache(seconds [, sliding] [, varyByParams]) Caches 在指定时间的页面输出缓存。设置 sliding 来重置每个页面的访问超时时间,设置 varyByParams 为请求页面的每个不同的查询字符串缓存不同版本的页面。
    Response.Redirect(path) 重定向浏览器请求到一个新的位置。
    Response.SetStatus(httpStatusCode) 设置HTTP状态代码发送到浏览器。
    Response.WriteBinary(data [, mimetype]) 写入 data 内容响应可选的MIME类型。
    Response.WriteFile(file) 写入文件内容响应。
    @section(sectionName) { content } (布局页面)定义一个有名字的内容区域。
    Server.HtmlDecode(htmlText) 解码一个HTML编码的字符串。
    Server.HtmlEncode(text) 为呈现在 HTML 标记中的字符串编码。
    Server.MapPath(virtualPath) 为指定的虚拟路径返回服务器的物理路径。
    Server.UrlDecode(urlText) 解码URL文本。
    Server.UrlEncode(text) URL文本编码。
    Session[key] 获取或设置一个存在的值,直到用户关闭浏览器。
    ToString() 显示一个用字符串表示的对象的值。
    UrlData[index] 从 URL 获取额外的数据(例如,/MyPage/ExtraData)。

       

  • 相关阅读:
    spring+hibernate 整合异常 Class 'org.apache.commons.dbcp.BasicDataSource' not found
    ExtJS+SpringMVC文件上传与下载
    没有权限角色管理功能菜单加载
    java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java he
    js 验证input 输入框
    目录结构
    文件权限命令 linux
    Java 代码完成删除文件、文件夹操作
    js 获取时间不能大于当前系统时间
    hibernate createQuery和createSQLQuery 查询结果count计算
  • 原文地址:https://www.cnblogs.com/zuoting-haoxue/p/8296991.html
Copyright © 2020-2023  润新知