zoukankan      html  css  js  c++  java
  • Silverlight实用窍门系列:37.Silverlight和ASP.NET相互传参的两种常用方式(QueryString,Cookie)

      在本节中将讲述Silverlight和ASP.NET页面的相互传参的两种常用方式:Cookie和QueryString。首先我们新建一个名为SLConnectASP.NET的Silverlight应用程序,然后在SLConnectASP.NET.web项目中添加一个Index.aspx的页面。

            一、Silverlight和ASPX页面的QueryString传参

            实现思路:在Silverlight端跳转到页面到Index.aspx并且传递一个QueryString参数ID,在该Index.aspx页面显示出ID。在Index.aspx页面有一个按钮可以向Silverlight所在页面传递一个参数aspxid,在Silverlight端读取aspxid参数并且显示出来。

            首先我们看Silverlight后台代码:

    复制代码
    #region QueryString传值//QueryString步骤一privatevoid button2_Click(object sender, RoutedEventArgs e) { //传递参数给Asp.net页面 HtmlPage.Window.Eval("location='"+ Application.Current.Host.Source.AbsoluteUri.Replace( Application.Current.Host.Source.AbsolutePath, "") +"/index.aspx?id=203';"); } //QueryString步骤四privatevoid ShowQueryString() { //接收到ASP.NET页面传送过来的QueryString值 IDictionary<String, String> paras = HtmlPage.Document.QueryString; if (paras.ContainsKey("aspxid")) { this.label1.Content ="获取到ASP.NET传值:"+ paras["aspxid"]; } } #endregion
    复制代码

            然后我们来看Index.aspx.cs的代码如下:

    复制代码
    #region ASP.NET端操作Silverlight传输过来的QueryString值//QueryString步骤二privatevoid BindQueryString() { //ASP.NET端获取到Silverlight传输过来的QueryString值if (Request.QueryString.Count >0) { this.Label1.Text ="获取到的Silverlight客户端QueryString值是:"+ Request.QueryString["id"].ToString(); } } //QueryString步骤三protectedvoid Button1_Click(object sender, EventArgs e) { //回传QueryString值给Silverlight客户端 Response.Redirect("./SLConnectASP.NETTestPage.aspx?aspxid=109"); } #endregion
    复制代码

            二、Silverlight和ASPX页面的Cookie传参

            实现思路:在Silverlight端创建一个Key名为FirCookieKey,Value值为FirCookieValue的Cookie,然后跳转页面到Index.aspx页面,在该页面显示出来。在该页面有一个按钮可以修改这个Cookie,并且跳转回Silverlight端,在Silverlight端读取这个已经被修改过的Cookie并且显示出来。

            首先我们看Silverlight端的后台代码MainPage.xaml.cs:包括步骤一创建Cookie、步骤四读取被修改过的Cookie

    复制代码
    #region Cookie传值//Cookie步骤一privatevoid button1_Click(object sender, RoutedEventArgs e) {
    //编写一个键为FirCookieKey,值为FirCookieValue的Cookiestring oldCookie = HtmlPage.Document.GetProperty("cookie") as String; DateTime expiration = DateTime.UtcNow + TimeSpan.FromDays(2000); string cookie = String.Format("{0}={1};expires={2}", "FirCookieKey", "FirCookieValue", expiration.ToString("R")); HtmlPage.Document.SetProperty("cookie", cookie); //跳转界面 HtmlPage.Window.Eval("location='"+ Application.Current.Host.Source.AbsoluteUri.Replace( Application.Current.Host.Source.AbsolutePath, "") +"/index.aspx';");
    }
    //Cookie步骤四privatevoid ShowCookie() { //显示当前键为FirCookieKey的Cookie值 String[] cookies = HtmlPage.Document.Cookies.Split(';'); foreach (String cookie1 in cookies) { String[] keyValues = cookie1.Split('='); if (keyValues[0] =="FirCookieKey") { this.textBox2.Content ="Cookie的Key值是:"+ keyValues[0]; this.textBox1.Content ="Cookie的Value值是:"+ keyValues[1];
    } }; }
    #endregion
    复制代码

             接着我们来看Index.aspx.cs,包括Cookie操作二和Cookie操作三

    复制代码
    #region ASP.NET端获取到操作Cookie值//Cookie操作二privatevoid BindCookie() { // ASP.NET端获取到Silverlight传输过来的Cookie值 HttpCookie cookie = Request.Cookies["FirCookieKey"]; if (cookie.Value !=null) { this.Label2.Text ="获取到的Silverlight客户端Cookie值:"+ cookie.Value; }
    }
    //Cookie操作三protectedvoid Button2_Click(object sender, EventArgs e) { //回传重新设置Cookie值然后传输给Silverlight HttpCookie cookie = Request.Cookies["FirCookieKey"]; cookie.Value ="NewCookieValue"; HttpContext.Current.Response.Cookies.Add(cookie); Response.Redirect("./SLConnectASP.NETTestPage.aspx"); } #endregion
    复制代码

            最后这两个实例的MainPage.xaml的代码如下:

    复制代码
    <Grid x:Name="LayoutRoot" Background="White"><sdk:Label Height="27" HorizontalAlignment="Left" Margin="41,25,0,0" Name="label1" VerticalAlignment="Top" Width="284"/><Button Content="传送浏览器参数" Height="38" HorizontalAlignment="Left" Margin="41,63,0,0" Name="button2" VerticalAlignment="Top" Width="113" Click="button2_Click"/><sdk:Label Height="27" HorizontalAlignment="Left" Margin="41,116,0,0" Name="textBox2" VerticalAlignment="Top" Width="284"/><sdk:Label Height="27" HorizontalAlignment="Left" Margin="41,149,0,0" Name="textBox1" VerticalAlignment="Top" Width="284"/><Button Content="设置Cookie值" Height="38" HorizontalAlignment="Left" Margin="41,194,0,0" Name="button1" VerticalAlignment="Top" Width="113" Click="button1_Click"/></Grid>
    复制代码

            Index.aspx的代码如下:

    复制代码
    <div><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br /><br /><asp:Button ID="Button1" runat="server" Text="回传值给Silverlight应用程序QueryString" onclick="Button1_Click"/><br /><br /><asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><br /><asp:Button ID="Button2" runat="server" Text="回传值给Silverlight应用程序Cookie" onclick="Button2_Click"/><br /></div>
     

  • 相关阅读:
    Vuecli3项目引入网页视频流媒体播放器EasyPlayer.JS报videojs not definde错误如何解决?
    穷人和富人的区别
    如何使用PCATTCP测试局域网传输速度
    DirectFB同时显示到X11和VNC上
    使用Openssl生成CA及签发证书方法
    内存泄漏定位
    关于在C++开发的项目中引用后缀名为.c文件的一句话提醒
    在Win32下建立GTK开发环境
    GTK/DFB中的WaitCursor
    GTK+/DFB优化
  • 原文地址:https://www.cnblogs.com/jimmy109/p/3088122.html
Copyright © 2011-2022 走看看