zoukankan      html  css  js  c++  java
  • ASP.NET 直接访问用户控件

    这个功能主要是为了解决常规的AJAX更新数据时对HTML代码的拼接,大力解决了AJAX开发的复杂性,维护性;个人觉得还是一个不错的解决方案!

    首先要实现客户端对用户控件的直接访问,需在Web.config进行如下配置:

    <system.webServer>
        <handlers>
          <add name="ControlLoadHandler" path="*.ascx" type="Crazy.CRM.ContorlLoadHandler" verb="*"/>  //当碰到.ascx后缀的请求时,让其交于一般处理程序ControlLoadHandler处理
        </handlers>
        <security>
          <requestFiltering>
            <fileExtensions allowUnlisted="true">
              <remove fileExtension=".ascx"/>  //移除IIS对.ascx后缀的访问限制,如果较低版本的IIS可能不需要。
            </fileExtensions>
          </requestFiltering>
        </security>
      </system.webServer>

    此时当我们发生一个ajax路径为“~/Test.ascx”时就将交于ControlLoadHandler处理。

    ControlLoadHandler代码如下:

    View Code
     1 using System;
     2 using System.Web;
     3 using System.Web.UI;
     4 using System.IO;
     5 using System.Text;
     6 
     7 namespace Crazy.CRM
     8 {
     9     /// <summary>
    10     /// 客户端访问用户控件.ascx处理类
    11     /// </summary>
    12     public class ContorlLoadHandler : IHttpHandler
    13     {
    14 
    15         public void ProcessRequest(HttpContext context)
    16         {
    17             //获取请求的相对路径"~/text.ascx",这里将不会得到URL参数
    18             string controlPath = context.Request.AppRelativeCurrentExecutionFilePath;
    19 
    20             //加载请求的用户控件,并添加到实例的页面中
    21             Page page = new Page();
    22             Control control = page.LoadControl(controlPath);
    23             page.Controls.Add(control);
    24 
    25             //获取用户控件最终解析后的代码
    26             StringWriter controlHtml = new StringWriter();
    27             context.Server.Execute(page, controlHtml, false);  //在我认识中只有使用Server.Execute方法才能引发控件的生命周期事件,如Load
    28 
    29             //响应请求,输出代码
    30             context.Response.Write(controlHtml.ToString());
    31         }
    32 
    33         public bool IsReusable
    34         {
    35             get
    36             {
    37                 return false;
    38             }
    39         }
    40     }
    41 }

    此时这个功能已经做好了,很简单吧!

    我们可以写个测试:

    <a href="Test.ascx">测试访问用户控件</a>

    大家可以试试哦!这个功能目前只是简单的访问,还未进行其他的处理,如果大家有兴趣或者有更好的方法不妨拿出来分享下哦~~

  • 相关阅读:
    每日一招:个股五种见底特征
    中国互联网或将被世界淘汰 !
    了解这23种设计模式
    用Nikto探测一个网站所用到的技术
    javax.crypto.BadPaddingException: Given final block not properly padded
    java.net.UnknownHostException: promote.cache-dns.local: unknown error
    CentOS 7 Rescure
    最小化安装的CentOS7挂载ntfs格式的U盘
    CentOS 7 最小化安装的无线网络配置
    Mysql Specified key was too long; max key length is 767 bytes
  • 原文地址:https://www.cnblogs.com/zcylife/p/2703232.html
Copyright © 2011-2022 走看看