博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【知识笔记】WebForm
阅读量:6176 次
发布时间:2019-06-21

本文共 4242 字,大约阅读时间需要 14 分钟。

一、ashx介绍以及ashx文件与aspx文件之间的区别

  ashx是什么文件?

.ashx 文件用于写web handler的。

.ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程。其实就是带HTML和C#的混合文件

.ashx文件适合产生供浏览器处理的、不需要回发处理的数据格式,例如用于生成动态图片、动态文本等内容

ashx文件是.net 2.0新加的文件类型(其实在.net 1.0下已经可用,但是没有公开提供).

ashx文件和aspx文件有什么不同? 我们先新建一个ashx文件看看:

代码示例:

当然你完全可以用.aspx 的文件后缀。使用.ashx 可以让你专注于编程而不用管相关的WEB技术。.ashx必须包含IsReusable.

如下例所示 

<% @ webhandler language="C#" class="AverageHandler" %>  using System;  using System.Web;  public class AverageHandler : IHttpHandler  {      public bool IsReusable      { get { return true; } }      public void ProcessRequest(HttpContext ctx)      {          ctx.Response.Write("hello");      }  }

.ashx比.aspx的好处在于不用多一个html

比aspx简洁多了,只有一个文件,没有后台cs文件(基于代码安全考虑,后边我们会自己添加这个文件)

.ashx对比aspx文件就好像 少了cs文件,其实这就是ashx和aspx不同的地方,因为aspx要将前后台显示和处理逻辑分开,所以就弄成了两个文件。

其实,在最终编译的时候,aspx和cs还是会编译到同一个类中去,这中间就要设计html的一些逻辑处理。

而ashx不同,它只是简单的对web http请求的直接返回你想要返回的结果,比aspx少处理了html的过程,理论上比aspx要快。

看看.net config文件中对两个文件类型请求的配置吧

<add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True" />

<add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="True" />

可以看到两个文件处理的类不一样(ashx处理的类叫SimpleHandleFactory,既然叫Simple,应该处理过程也比较 Simple,响应速度也应该快点吧:)

 二、DropDownList 动态绑定数据

效果

<asp:DropDownList ID="ddlCurrencyCode" runat="server" Width="173">

<asp:ListItem Text="全部" Value="" />

<asp:ListItem Text="人民币" Value="RMB" />

<asp:ListItem Text="港币" Value="HKD" />

</asp:DropDownList>

代码:

this.ddlCurrencyCode.Items.Clear();this.ddlCurrencyCode.Items.Add(new ListItem { Value = "", Text = "全部" });ListItem listItem;list.ForEach(item =>                {                    listItem = new ListItem();                    listItem.Text = item.Key;                    listItem.Value = item.Key;                    this.ddlCurrencyCode.Items.Add(listItem);                });

 三、动态控制颜色

 

四、CheckBoxList动态绑定数据、CheckBox设置间距

前端:

后端:

var lists = new BasicInfoPresenter().ConvertHotelSellChannel(SellChannels);            chklSellChannelID.DataSource = lists;//根据lists的字段 去设置控制的value和text            chklSellChannelID.DataValueField = "HotelSellChannelId";            chklSellChannelID.DataTextField = "ChannelName";            chklSellChannelID.DataBind();            foreach (ListItem item in chklSellChannelID.Items)            {item.Attributes.Add("style", "display:block;margin-right:20px;float:left;");                if (item.Value.Contains($"{(int)SellChannelType.Static}") || item.Value.Contains($"{(int)SellChannelType.CB}"))                {                    item.Selected = true;                    item.Enabled = false;                }                if (item.Value.Contains($"{(int)SellChannelType.Dynamic}"))                {                    item.Selected = false;                    item.Enabled = false;                }            }
View Code

CheckBox选中的判断:

ListItem _list;            foreach (var ctl in chklSellChannelID.Items)            {                if (ctl is ListItem)                {                    _list = (ListItem)ctl;                    if (_list.Selected == true)                    {                      }                }            }
View Code

 

五、asp.net使用include包含文件

  用asp.net使用include包含文件?……有必要吗?使用“用户控件”不是更好吗?

当然,绝大多数情况下,用户控件都能解决问题。但若要在用户控件中需包含其他公用块,即使用用户控件嵌套,老是出问题,而且也没必要使用asp.net的用户控件,因为我要包含的块是静态的,例如在head中包含一个logo……

1、asp.net页面也可以像asp那样,用include来包含文件:

<div class="includeParent">

    3.include htm:

    <!--#include file="include/HeadAd.htm"-->

</div>

2、也可以包含有服务端代码的aspx或ascx文件,但它必须是动态编译的文件(是CodeFile或单文件,而非CodeBehind编译的)。

<div class="includeParent">

    4.include aspx:

    <!--#include file="include/HeadNav.aspx"-->

</div>

<div class="includeParent">

    5.include ascx:

    <!--#include file="include/HeadNav.ascx"-->

</div>

HeadNav.aspx和HeadNav.ascx的内容示例:

<div class="includeDiv"><%=Guid.NewGuid().ToString()%></div>

3、也可以使用asp.net的“Response.WriteFile”方法,但仅限于静态文件:

<div class="includeParent">

    1.WriteFile htm:

    <%Response.WriteFile("include/HeadAd.htm");%>

</div>

实际应用,将图片放NavLogo.html中当公共页面,被多个页面共享,发生修改时只改一处即可。

 

NavLogo.html的内容如下:

<div class="logo-grop">

    <img class="logo" src=<%=System.Web.Configuration.WebConfigurationManager.AppSettings["navLogoImg"] %> title="logo" />

</div>

 

 

 

 

 

转载于:https://www.cnblogs.com/peterYong/p/10679357.html

你可能感兴趣的文章
陶哲轩实分析习题9.1.6
查看>>
常用音频软件:Cool edit pro
查看>>
努力的方向,除了诗和远方,还有一堆技术。
查看>>
SQL CHECK 约束
查看>>
git提交到一半关闭时
查看>>
WMware 10 Ubuntu 12.04 进入Unity模式
查看>>
简单通用的访问CVS的方法
查看>>
kbengine mmo源码(完整服务端源码+资源+完整客户端源码)
查看>>
【操作系统】实验四 主存空间的分配和回收
查看>>
Log4j 配置 的webAppRootKey参数问题
查看>>
VMware ESXi 5.0中时间配置中NTP设置
查看>>
C++中memset()函数笔记
查看>>
oracle sql 数结构表id降序
查看>>
使用cnpm加速npm
查看>>
MySql跨服务器备份数据库
查看>>
一个字典通过dictionaryWithDictionary 他们的内存指针是不同的
查看>>
HTTP 错误 500.0的解决方法。
查看>>
CCF201612-1 中间数(解法三)(100分)
查看>>
百度前端任务一学习的知识
查看>>
C# 四个字节十六进制数和单精度浮点数之间的相互转化
查看>>