• ASP.NET —— Web Pages


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

    Razor语法简介:

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

    遍历foreach:

    <ul>
        @foreach (var i in Request.ServerVariables)
        {
            <li>@i</li>
        }
    </ul>

    统一的布局:

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

    <body>
        <!--导入页眉、页脚:RenderPage-->
        @RenderPage("header.cshtml")
        <h1>Hello Web Pages</h1>
        <p>This is a paragraph</p>
        @RenderPage("footer.cshtml")
    </body>
    
    <!DOCTYPE html>
    <html>
        <body>
            <!--页眉-->
            <h1>This is header.</h1>
        </body>
    </html>
    
    <!DOCTYPE html>
    <html>
        <body>
            <!--页脚-->
            <h6>This is footer.</h6>
        </body>
    </html>

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

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

    防止代码泄露:

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

    隐藏敏感信息:

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

    <body>
        @WebMail.UserName
    </body>
    
    <!--整个_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";
    }

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

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

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

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

    读取输入:

    @{ 
        var message = "";
        if(IsPost)
        {
            message = Request["message"];
        }
    }
    @message
    <form method="post">
        <input type="text" name="message" />
        <input type="submit" value="Submit" />
    </form>

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

    添加自定义的属性:

    @{ Page.Title = "Index Page";}
    @Page.Title<br />
    @RenderPage("_header.cshtml")
    
    <!--_header页面-->
    <body>
        @Page.Title
    </body>

    处理文本文件:

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

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

    @{
        //var dataFile = Server.MapPath("~/App_Data/Persons.txt");
        //var dataFile = Server.MapPath("~/App_Data/Persons.csv");
        var dataFile = Server.MapPath("~/App_Data/Persons.xml");
        Array userData = File.ReadAllLines(dataFile);
    }
    <h1>Reading Data from a File</h1>
    @foreach (string dataLine in userData)
    {
        foreach (string dataItem in dataLine.Split(','))
        {@dataItem <text> </text>}
        <br />
    }
  • 相关阅读:
    女孩提出分手的N种理由
    Attribute应用,简化ANF自定义控件初始化过程
    关于Web的动态页面与静态页面分开的想法.
    .Net面试题
    算法题,不用递归,构造树型
    花两个小时,做了个分页控件
    事件应用,为系统提供扩展功能
    绘制半透明的图片
    Tile Studio简介(转载)
    Thinking in Java 摘录笔记
  • 原文地址:https://www.cnblogs.com/quanxi/p/6445768.html
Copyright © 2020-2023  润新知