• 母版页中使用ajax脚本取数据


      因母版页继承自UserControl,我们无法像正常页面那样使用Jquey或Ajax的PageMethods等无刷新方法取数据。不过可以使用ajax提供的Sys.Net.WebRequest来解决这一问题。

    方法如下: 

      1、 页面中拖入ScriptManager。以便于使用Ajax脚本。同时放在其它客户端控件,用于触发NetPost方法。这里不列出客户端控件。

    <asp:ScriptManager ID="smMaster" runat="server" ScriptMode="Auto" EnablePageMethods="true">
    </asp:ScriptManager>


      2、在Master源码中编写js

            function NetPost() {
                
    //创建实例
                var wRequest = new Sys.Net.WebRequest();
                
    //设置请求URL
                wRequest.set_url("../CheckState/CheckNetState.aspx");
                
    //定义参数
                var body = "ip=192.168.1.1";
                
    //设置参数
                wRequest.set_body(body);
                
    //设置请求方式
                wRequest.set_httpVerb("POST");
                
    //请求完成处理函数
                wRequest.add_completed(PostNet);
                
    //执行请求
                wRequest.invoke();
            }
            
    function PostNet(exector, eventArgs) {
                
    //执行器的状态E :responseAvailable、aborted 或 timedOut。
               //仅当 responseAvailable 返回 true 时,事件处理程序才能访问执行器的其他响应信息。
                if (exector.get_responseAvailable()) {
             
      //判断状态是否正常
                if (exector.get_statusCode() == '200') {
                
         //得到返回值
                        var returnInfo = exector.get_responseData();
                        
    if (returnInfo == "0") {                            
                   
          //显示相关内容
                        }
                    } 
                } 
            }


       3、add_completed()说明:
       注册的事件处理程序函数必须接受两个参数:
          1) 对发出网络请求的执行器的引用。通过访问执行器,可以检查其状态和检索响应数据。
          2) eventArgs 参数,它由引发完成请求事件的执行器设置。

      4、编写请求页面

        请求地址为一个页面,没有任何HTML内容,仅在Page_load方法中编写代码。本例中的请求页面放在根目录的CheckState文件夹下,名称为:CheckNetState.aspx 。

      5、请求页面代码如下,主要实现Ping功能。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    namespace Iaddtech.Environmental.Web.UI.CheckState
    {
        
    public partial class CheckNetState : System.Web.UI.Page
        {
            
    protected void Page_Load(object sender, EventArgs e)
            {
                Response.Clear();
                
    //得到参数
                string ip = Request.Form["ip"];
                
    int isConnect = PingServer(ip);
                
    //输入返回值
                Response.Write(isConnect.ToString());
                Response.End();
            }

            
    private int PingServer(string ip)
            {
                System.Net.NetworkInformation.Ping p 
    = new System.Net.NetworkInformation.Ping();
                System.Net.NetworkInformation.PingOptions options 
    = new System.Net.NetworkInformation.PingOptions();
                options.DontFragment 
    = true;
                
    string data = "t";
                
    byte[] buffer = System.Text.Encoding.ASCII.GetBytes(data);
                
    int timeout = 1000// Timeout 时间,单位:毫秒
                System.Net.NetworkInformation.PingReply reply = p.Send(ip, timeout, buffer, options);
                
    if (reply.Status == System.Net.NetworkInformation.IPStatus.Success)
                    
    return 0;
                
    else
                    
    return 1;
            }
        }
    }


      6、用其它页面套用母版页后,测试。

     Sys.Net.WebRequest请参考:http://msdn.microsoft.com/zh-cn/library/bb310979.aspx 



  • 相关阅读:
    Hbase架构与原理(转)
    Hbase的表结构中rowkey的设计---避免热点问题
    mysql之my.cnf详解
    MongoDB CPU利用率很高,怎么破(转)
    数据库设计(2/9):域,约束和默认值(Domains, Constraints and Defaults)
    数据库设计(1/9):数据元(Data Elements)
    SQL Server安全(11/11):审核(Auditing)
    VARCHAR列上的索引
    SQL Server 2016里的sys.dm_exec_input_buffer
    在SQL Server里禁用聚集索引——真的好么?
  • 原文地址:https://www.cnblogs.com/scottckt/p/1831882.html
Copyright © 2020-2023  润新知