Silverlight实用窍门系列:37.Silverlight和ASP.NET相互传参的两种常用方式(QueryString,Cookie)【附带实例源码】-阿里云开发者社区

开发者社区> 煦风满裳> 正文

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步骤一
private void 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步骤四
private void 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步骤二
private void BindQueryString()
{
 //ASP.NET端获取到Silverlight传输过来的QueryString值
 if (Request.QueryString.Count > 0)
 {
 this.Label1.Text = "获取到的Silverlight客户端QueryString值是:"
 + Request.QueryString["id"].ToString();
 }
}
//QueryString步骤三
protected void 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步骤一
private void button1_Click(object sender, RoutedEventArgs e)
{

 //编写一个键为FirCookieKey,值为FirCookieValue的Cookie
 string 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步骤四
private void 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操作二
private void BindCookie()
{
 // ASP.NET端获取到Silverlight传输过来的Cookie值
 HttpCookie cookie = Request.Cookies["FirCookieKey"];
 if (cookie.Value != null)
 {
 this.Label2.Text = "获取到的Silverlight客户端Cookie值:" + cookie.Value;
 }

}
//Cookie操作三
protected void 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>

本实例采用VS2010+Silverlight 4.0编写。如需源码请点击 SLConnectASP.NET.rar 下载。本实例效果图如下:

2011041317211622.jpg2011041317212319.jpg

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
(周期计划-8)常用集合的源码分析:HashMap
写在前面 感兴趣的看官,可以看看我的其他文章:1、从公司代码看Notification2、Java反射实践:从反射中理解class3、从公司项目配置看Gradle 上一篇博客,我们分析了ArrayList的源码实现,ArrayList吊起来观察一番之后,那么下一个被吊起来的肯定就是HashMap了。
811 0
最全的常用正则表达式大全
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。
1068 0
StringUtils工具类常用方法
前言:工作中看到项目组里的大牛写代码大量的用到了StringUtils工具类来做字符串的操作,便学习整理了一下,方便查阅。 isEmpty(String str) 是否为空,空格字符为false isNotEmpty(String str) 是否为非空,空格字符为true isBlank(S...
831 0
Android 一些常用跳转应用(其实查源码是一样的但留着Copy的时候方便)
显示网页 Java代码 Uri uri = Uri.parse("http://google.com"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); Uri uri = Uri.
558 0
bash常用的几种循环语句格式
if  条件 then 执行语句 else 默认语句 if  条件1 then 执行语句 elif 条件2 then 执行语句 else 默认语句 for 变量 in 取值列表 do 命令 done while...
488 0
【论文阅读心得】图像识别中一个常用词的中英文释义&mdash;&mdash;artifact
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ artifact 非自然信号,人工制品 In video systems, something unnatural or unintended observed in the reproduction of an image by the system. 在视频系统中,图象重显时观察到的反常的或非有意安排的某些东西。
717 0
+关注
煦风满裳
程兴亮,专注于C#方面的开发工作,喜欢钻研Silverlight,CIL等方面的知识。平时喜欢看书、写技术博客、摄影、旅游和运动。
32
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载