【WebForm】知识笔记

一、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要将前后台显示和处理逻辑分开,所以就弄成了两个文件。

扫描二维码关注公众号,回复: 5874779 查看本文章

其实,在最终编译的时候,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);
                });

 三、动态控制颜色

<td align="center" style='color:<%# Container.ItemIndex == 0 ? "green":"red"%>'>

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

前端:

<asp:CheckBoxList ID="chklSellChannelID" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow"></asp:CheckBoxList>

后端:

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

 

 

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/peterYong/p/10679357.html