Silverlight和ASP.NET页面的相互传参的两种常用方式:Cookie和QueryString。
一个名为SLConnectASP.NET的Silverlight应用程序和在SLConnectASP.NET.web项目中添加的Index.aspx的页面。SLConnectASP.NET的Silverlight应用程序:
 public partial class MainPage : UserControl
  {
  public MainPage()
  {
  InitializeComponent();
  ShowQueryString();
  ShowCookie();
  }
#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#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
  }SLConnectASP.NET.web项目中添加的Index.aspx的页面:
public partial class Index : System.Web.UI.Page
  {
  protected void Page_Load(object sender, EventArgs e)
  {
  BindQueryString();
  BindCookie();
  }#region ASP.NET端操作Silverlight传输过来的QueryString值
private void BindQueryString()
{
  //ASP.NET端获取到Silverlight传输过来的QueryString值
  if (Request.QueryString.Count > 0)
  {
  this.Label1.Text = "获取到的Silverlight客户端QueryString值是:"
  + Request.QueryString["id"].ToString();
  }
}protected void Button1_Click(object sender, EventArgs e)
{
  //回传QueryString值给Silverlight客户端
  Response.Redirect("./SLConnectASP.NETTestPage.aspx?aspxid=109");
}
#endregion#region ASP.NET端获取到操作Cookie值
//Cookie操作二
private void BindCookie()
{
  try
  {
  // ASP.NET端获取到Silverlight传输过来的Cookie值
  HttpCookie cookie = Request.Cookies["FirCookieKey"];  this.Label2.Text = "获取到的Silverlight客户端Cookie值:" + cookie.Value;
  }
  catch (Exception c)
  { }
}
//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
  }现在可不可以定义接口来规范这些方法,通过实现接口来实现这些功能???