kagula
2012-2-27
学习环境
Win7SP1
VS2010SP1
第一种:GET方式传值
Silverlight源码
using System;
using System.Collections.Generic;
using System.Windows.Browser;
using System.Windows.Controls;
using System.Windows;
namespace SilverlightApplication2
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
ShowQueryString();
}
//切换到aspx页面
private void button1_Click(object sender, RoutedEventArgs e)
{
HtmlPage.Window.Eval("location='" + Application.Current.Host.Source.AbsoluteUri.Replace(
Application.Current.Host.Source.AbsolutePath, "") + "/index.aspx?id=123';");
}
//接收到ASP.NET页面传送过来的QueryString值
private void ShowQueryString()
{
IDictionary<String, String> paras = HtmlPage.Document.QueryString;
if (paras.ContainsKey("aspxid"))
{
textBox1.Text = "获取到ASP.NET传值:" + paras["aspxid"]; //this.label1.Content =
}
}
}
}
aspx源码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace SilverlightApplication2.Web
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
BindQueryString();
}
//ASP.NET端获取到Silverlight传输过来的QueryString值
private void BindQueryString(){
if (Request.QueryString.Count > 0) {
this.Label1.Text = "获取到的Silverlight客户端QueryString值是:" + Request.QueryString["id"].ToString();
}
}
//回传QueryString值给Silverlight客户端
protected void Button1_Click(object sender, EventArgs e){
Response.Redirect("./SilverlightApplication2TestPage.aspx?aspxid=321");
}
}
}
第二种:Cookie方式传值
Silverlight源码
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Browser;
namespace SilverlightApplication3
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
ShowCookie();
}
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.Text = "Cookie的Key值是:" + keyValues[0];
this.textBox1.Text = "Cookie的Value值是:" + keyValues[1];
}
};
}
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';");
}
}
}
aspx源码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace SilverlightApplication3.Web
{
public partial class index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
BindCookie();
}
private void BindCookie(){
// ASP.NET端获取到Silverlight传输过来的Cookie值
HttpCookie cookie = Request.Cookies["FirCookieKey"];
if (cookie.Value != null) {
this.Label2.Text = "获取到的Silverlight客户端Cookie值:" + cookie.Value;
}
}
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("./SilverlightApplication3TestPage.aspx");
}
}
}
参考资料
[1]《Silverlight实用窍门系列:37.Silverlight和ASP.NET相互传参的两种常用方式(QueryString,Cookie)【附带实例源码】》
http://www.cnblogs.com/chengxingliang/archive/2011/04/14/2015085.html