之前有文章介绍了aspx向silverlight传值的问题http://www.cnblogs.com/lensso/archive/2010/07/27/1785844.html
本文介绍silverlight向aspx传值的方法。
1.通过silverlight调用aspx前台js函数的方法可以实现将silverlight中的值传给前台,实现对前台控件的赋值:
ScriptObject SetMaterial = HtmlPage.Window.GetProperty("JS函数名") as ScriptObject;
SetMaterial.InvokeSelf(“需要传给aspx前台的值”);
这个方法有局限性,只能将值传到前台,无法从后台[即服务端]取得该值[当然,可能有其它方法可以实现服务端从前台取回值,例如使用JS]。
2.使用cookie进行传值:
silverlight中可以使用如下方法给cookie赋上值。
HtmlPage.Document.SetProperty("cookie", "cookie的key=cookie的值");
这里有一个需要注意的地方,那就是中文编码的问题,如果cookie的key为中文,则aspx端是取不到该cookie的,这个简单,key就用英文就行了,如果cookie的值为中文时,aspx端取到的是乱码。
要解决这个问题则需要手动为cookie的值进行编解码,具体操作如下:
HtmlPage.Document.SetProperty("cookie", string.Format("cookie的key={0}", HttpUtility.UrlEncode("cookie的值")));//silverlight端对cookie的值进行编码
//aspx端进行解码
HttpCookie cOrigin = Request.Cookies["Origin"];
if (null != cMaterial)
{
string origin = Server.UrlDecode(cOrigin.Value);
}