ASPX页面代码笔记

一、ASPX页面代码

1.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="QualityException.aspx.cs" 
Inherits="QualityException_QualityException" %>

解释:Language="C#" --编程语言为C#
AutoEventWireup="true" --代表是否自动关联Page_*事件方法
CodeFile="Default.aspx.cs" --指示后台代码文件,表示该页的后置代码在当前目录下的xx.aspx.cs文件中
Inherits="_Default" 继承类, --表示页面中的控件是在哪个类中定义的

2.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
                                     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

解释:以HTML格式遵循W3C标准XHTML1.0协议。

3.<head id="Head1" runat="server">

解释:aspx运行时会被编译,其中没有runat server属性的html标签会被直接写入response,有runat server属性的html标签会转换成对应的HtmlControl子类加入到页面的控件集合中,按照一个控件的生命周期进行处理,这就是"运行在服务器上"的意思。一个最直接的表现就是,当你写一个id="abc"的div,如果有runat server属性,在你的aspx.cs文件中直接可以使用abc.XXX来操作这个对象,而没有runat server的话,在cs中是没有这个对象的。以上说的是asp.net中的html控件,asp控件只能runat server,因为他们不是直接和html对应的。

4.<link rel="stylesheet" type="text/css" href="theme.css" />

解释:<link> 是设置外部文件的链接标记,用于确定本页面与其他文档之间的关系。 <rel>是制定什么样的链接 ,<stylesheet>是样式表的意思, <href>文件的位置定义外联方式,整句话即引入名为 theme.css 的样式表。

<script type="text/javascript" src="../js/echarts.js"></script>
解释:这个是加载js文件,表示在该网页页面中插入了一个JS脚本文件。


5.<div style="display:none">

解释:

none   此元素不会被显示
block  此元素将显示为块级元素,此元素前后会带有换行符
inline 默认,此元素会被显示为内联元素,元素前后没有换行符
list-item 此元素会作为列表显示

<div style="style:display:none">就是在一个隐藏层里 </div>
因为display为none,所以这部分是不会显示在页面中的

二、ASPX.CS页面代码

1. C# 中异常处理

try
{

}
catch (Exception e)
{
    string err = e.Message;
    Console.WriteLine(err);
}

2. C# 中实例无法引用静态成员变量?

静态成员也称为共享成员,例如静态属性、静态字段、静态方法;静态成员可以在类的实例之间共享。静态类中只能有静态成员,不能有实例成员,因为静态类不能进行实例化;
  在非静态类中,即可以有静态成员也可以有非静态成员。

C# 中静态成员和实例成员的区别:
 静态成员需要通过static修饰,非静态成员不需要通过static修饰;
 静态成员属于类,可以直接通过 " 类名.静态成员 " 的方式访问;
 非静态成员,必须实例化对象后,通过 " 对象.实例 " 成员来访问。

当类第一次加载的时候(第一次被加载到内存的时候),该类下的所有的静态成员都会被加载,实例成员有多少个对象,就会创建多少个对象。静态成员会被加载到静态存储区,直到程序退出时才会被释放。
由上面显然可知,定义静态的成员是可以影响程序的执行效率的。那么什么时候定义静态的成员变量呢?
① 变量需要被共享的时候    ②方法需要被反复的调用的时候

class Program
{
    static void Main(string[] args)
    {
        //静态成员属于类,可以直接通过“类名.静态成员”的方式访问
        Person.huozhi();
        //实例成员属于对象,需要通过“对象名.实例成员”来访问
        Person p = new Person();
        p.laodi();
    }
}

class Person
{
    //静态成员变量
    private static int nAge;
    //实例成员变量
    private string strName;
    public static void huozhi()
    {
        Console.WriteLine("老铁");
    }
    public void laodi()
    {
        Console.WriteLine("小老弟");
    }
}

3.[WebMethod]

解释:带有[WebMethod]的属性的方法,在前端可以直接利用Ajax调用。

1、方法使用public static修饰,返回类型最好是string
2、方法前添加 [WebMethod] 属性
3、客户端访问时要使用Post方法,和Json作为数据形式进行交互,否则会整页HTML返回
4、在jQuery访问时,回调中的data.d才是真正的返回内容
5、访问URL为: http://abc.com/abc.aspx/GetTime ,如有个GetTime的公共静态方法

静态函数中不能用服务器控件,所以[WebMethod]方法不能使用服务器控件。

参考:C#中[WebMethod]的用法


4. this.plantSelect.innerHTML
  this可以省略 plantSelet是前端控件的id。


5. Ajax处理JSON的两种方式对比

根据Ajax的局部刷新请求,后台有两种处理方式,一种是建立 .ashx 文件处理每一个请求,但当请求过多时就需要建立很多的文件,不cool;另一种是使用 [WebMethod] 在当前页面的后台 .cs 文件中为每个请求建立方法来处理,这样可以只用一个页面写所有的请求,比较cool。

.cs文件

1)后端--静态方法
    [WebMethod]
    public static string getPlantSelect(string plant,string model)
    {
        GetPlanData gpd = new GetPlanData();
        DataTable dtBuilding = gpd.GetBuilding(plant);

        string defaultBuild = dtBuilding.Rows[0][0].ToString();
        DataTable dtFloor = gpd.GetFloor(plant, defaultBuild);
		......
		
        string responseStr = "{\"buildings\":" + JsonConvert.SerializeObject(dtLine) + "}";
        return responseStr;
    }2)前端--ajax方法
  $(function () {

    //更改Plant的值
    $("#plants").on("click", "ul>li", function () {
        var plant = $(this).text();
        var model = $("#productSelect").text();

        $.ajax({
            type: "post",
            url: "planManage.aspx/getPlantSelect",            
            data: "{'plant':'" + plant + "','model':'" + model + "'}",
            dataType: "json",
            contentType: "application/json;charset=utf-8",
            success: function (result) {
                var data = JSON.parse(result.d);
                ......

.ashx文件

1)后端--静态方法
	public class PlantSelect : IHttpHandler {
	    GetPlanData gpd = new GetPlanData();
	    public void ProcessRequest (HttpContext context) {
	        string plant = context.Request.Form["plant"];
	        ......
	        DataTable dtOld = gpd.GetLineV4(plant, defaultBuild, defaultFloor, defaultSection);
	        ......
	
	        string responseStr = "{\"buildings\":" + JsonConvert.SerializeObject(dtLine) + "}";
	        context.Response.ContentType = "text/plain";
	        context.Response.Write(responseStr);
	    }2)前端--ajax方法
  $(function () {

    //更改Plant的值
    $("#plants").on("click", "ul>li", function () {
        var plant = $(this).text();
        var model = $("#productSelect").text();

        $.ajax({
            type: "post",
            url: "PlantSelect.ashx",
            data: { 'plant': plant, 'model': model },
            success: function (result) {
                var data = JSON.parse(result);
                ......

三、C# Project

1. IIS中解决字体样式找不到

最近项目中用到了fontawesome-webfont.svg等字体。部署项目后,发现没有<,+等符号,字体也不对,发现浏览器总是报找不到woff、woff2字体的错误。​

原因:因为服务器IIS不认SVG,WOFF/WOFF2 这几个文件类型,只要在IIS上添加MIME 类型即可。

解决方案:

登录网址下载对应的文件放在自己的项目中 http://fontawesome.io/#modal-download​

1. 打开服务器IIS管理器,找到MIME类型

2. 添加MIME类型 添加三条:  

   文件扩展名             MIME类型 
	.svg              image/svg+xmz
	​.woff          application/x-font-woff
	​.woff2         application/x-font-woff

注:本文在win7环境下IIS7版本中填写的MIME类型

2.DataTable 为空,引起报错

判断DataTable是否有数据(有数据):

if(DataTable != null && DataTable.Rows.Count > 0)

判断DataTabel是否为空表:

if(DataTable == null || DataTable.Rows.Count <= 0)

3. .aspx文件和.aspx.cs文件的一些说明

解释:

     .aspx文件:(页面)书写页面代码。存储的是页面design代码。只是放各个控件的代码,处
理代码一般放在.cs文件中;
     .aspx.cs文件:(代码隐藏页)书写类代码,存储的是程序代码,一般存放与数据库连接和数
据库相关的查询、更新、删除操作,还有各个按钮单击后发生的动作等。

4. ASPX页面和ASPX.CS页面加载顺序

  • 先加载aspx.cs的Page_load函数
  • 再加载aspx页面,aspx页面引用JS文件,调用Ajax方法
  • Ajax传参到aspx.cs函数,使用连接Oracle数据库函数调用存储过程
  • aspx.cs函数返回String,返回到Ajax success里,实现在前台动态刷新显示

5. 一个C#项目中 page_load、HTML和JS加载顺序

Page_Load确实在html之前先执行.html是后输出的.
-> 最通俗的说法是,aspx页属于前台,是布局页面
-> cs文件是后台,处理逻辑数据

  .net的机制是这样的,先运行a.aspx.cs的Load事件,处理结束后生成部分html标签,转换到a.aspx 
处理<% %>之间的代码,注意此时的.net控件,如asp:TextBox等已经转换为对应的html的
<input type='text'>,然后运行body的onload事件

asp.net页面运行周期:
1、请求到达服务器
2、服务器运行页面cs代码
3、服务器加载aspx文件,执行<% %>代码块

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值