aspx向silverlight传值
原文:http://www.cnblogs.com/lensso/archive/2010/07/27/1785844.html
方法1:
向嵌入aspx页面的silverlight对象添加imnitParams参数,它的value是与querystring类似的键值对,多个参数用逗号隔开,aspx后台代码如下所示:
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> <param name="source" value="ClientBin/Para_from_aspx2sl.xap"/> <param name="onError" value="onSilverlightError"/> <param name="background" value="white"/> <param name="minRuntimeVersion" value="3.0.40624.0"/> <param name="autoUpgrade" value="true"/> <param name="initParams" value="id=114,name=lensso"/> <!--或以如下形式给value赋值--> <!--<param name="initParames" value="id=<%# Request.Querystring["id"]%>"/>--> </object>
至此完成了aspx页面的赋值工作,在silverlight中的Application_Startup事件处理函数中可以利用事件变量来取得该值,(App.Xaml.cs)代码如下:
privatevoid Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual =new MainPage();
MessageBox.Show(e.InitParams["id"]+e.InitParams["name"]);
}
方法2:
1.下载System.Web.Silverlight.dll(可以去网上搜一下)
2.将下载的dll引用进web工程
3.在aspx页面添加注册代码,如下:
<%@ Register Assembly="System.Web.Silverlight" Namespace="System.Web.UI.SilverlightControls" TagPrefix="sl"%>
4.添加silverlight控件,代码如下:
<sl:Silverlight id="slobj" runat="server" source="~/ClientBin/Para_from_aspx2sl.xap" version="2.0" width="100%" height="100%"></sl:Silverlight>
5.添加scriptmanager,代码如下
<asp:scriptmanager ID="Scriptmanager1" runat="server"></asp:scriptmanager>
6.aspx后台代码传值,代码如下:
slobj.InitParameters ="id=123,name=hello";
7.silverlight中取得aspx传过来的值,代码如方法1中。
<注>如果你想把配置放在web.config中,在aspx的后台添加配置,而不想使用sl控件,可以使用aspx的literal控件,如下方法:
web.config配置
<appSettings>
<add key="AuthenticationAddress" value="http://192.168.104.133:13999/SysAdmin/Runtime/AuthenticationService.svc"/>
</appSettings>
aspx中的写法如下
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
width="100%" height="100%">
<param name="source" value="ClientBin/OIU.xap"/>
<param name="onError" value="onSilverlightError"/>
<param name="background" value="white"/>
<param name="minRuntimeVersion" value="3.0.40818.0"/>
<param name="autoUpgrade" value="true"/>
<asp:Literal ID="slInitParams" runat="server"></asp:Literal>
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40818.0" style="text-decoration: none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="获取 Microsoft Silverlight"
style="border-style: none"/>
</a>
</object>
<iframe id="_sl_historyFrame" style="visibility: hidden; height: 0px; width: 0px;
border: 0px"></iframe>
注意第8行添加的控件
aspx后台这么写
StringBuilder sb =new StringBuilder();
sb.Append(" <param name=\"InitParams\" value=\"");
sb.Append(string.Format("AuthenticationAddress={0}", ConfigurationManager.AppSettings["AuthenticationAddress"]));
sb.Append( "\"></param>");
slInitParams.Text =sb.ToString();
最好是将向SL传值的代码写在前台,这样的话就可以把Sl嵌入到其它已经发布了的项目中,而不用重新编译,具体代码可以如下:

<Page Language="C#"/>//纯前台页面,不添加页面后台文件 <Script runat="server">
//将页面的Page_Load事件写在前台,这样的话就SL就是一个纯前台的模块了
Protected Page_Load(object sender,EventArgs e)
{
StringBuilder sb = new StringBuilder();
sb.Append(" <param name=\"InitParams\" value=\"");
sb.Append(string.Format("AuthenticationAddress={0}", ConfigurationManager.AppSettings["AuthenticationAddress"]));
sb.Append( "\"></param>");
slInitParams.Text =sb.ToString();
}
</Script>

同样可以实现动态配置silverlight的服务,需要注意的是,因为SL是作为客户端插件运行的,它永远是运行在客户端,不像aspx是向服务端发送请求,所以如果服务是映射到外网了的话,配置的服务地址一定要是服务的外网地址。
aspx向silverlight传值的更多相关文章
- .aspx.cs传值与取值
1:.aspx中post传值 $.post("ABP_ExchangeRatelz.aspx", { option: "isdelete", Ori_Curre ...
- asp.net 页面跳转传值的几种方式
参考地址: http://blog.csdn.net/zzzzzzzert/article/details/8486143 protected void Button1_Click(object se ...
- ASP三种常用传值方式:
ASP 页面(两个aspx页面)传值方式:背景: 两个aspx 页面valuepage.aspx tbusername tbpwdobtainvalue.aspx tbusername tbpwd 1 ...
- Prism 4 文档 ---第10章 Silverlight和WPF之间共享代码
本主题帮助你理解来自Prism的多目标和它的优缺点.多目标的代码针对两个不同的平台有大致相同的代码库.这允许同时保持代码尽可能多一样能够产生针对两种不同技术的二进制文件.在这种情况下,本节介绍 ...
- MVC HtmlHelper用法(一)@Html.BeginForm的使用总结
1.@using(Html.BeginForm()){} //提交到当前页面 2.@using ...
- web前端技术归类
1.以屏幕可用宽和高的百分比来定义弹出框的宽和高 var trueWidth = $(top.window).width() * 0.9;var trueHeight = $(top.window). ...
- MVC把随机产生的字符串转换为图片
原文:MVC把随机产生的字符串转换为图片 Insus.NET在这篇中<在ASP.NET MVC应用程序中随机获取一个字符串>http://www.cnblogs.com/insus/p/3 ...
- Prism 4 文档 ---第8章 导航
作为同用户具有丰富的交互的客户端应用程序,它的用户界面(UI)将会持续不断的更新来反映用户工作的当前的任务和数据.用户界面可以进行一段时间相当大的变化作为用户交互的应用程序中完成各种任务.通过 ...
- Prism 4 文档 ---第5章 实现MVVM模式
MVVM模式有助于清楚的区分应用程序界面的业务层和展现层.保持一个清晰的应用程序逻辑和UI分离有助于处理开发和设计过程中大量的问题,同时,使得应用程序的测试,维护,和扩展更加容易.MVVM也可 ...
随机推荐
- 30分钟快速掌握AngularJs
[后端人员耍前端系列]AngularJs篇:30分钟快速掌握AngularJs 一.前言 对于前端系列,自然少不了AngularJs的介绍了.在前面文章中,我们介绍了如何使用KnockoutJs来 ...
- H2O是开源基于大数据的机器学习库包
H2O是开源基于大数据的机器学习库包 H2O能够让Hadoop做数学,H2O是基于大数据的 统计分析 机器学习和数学库包,让用户基于核心的数学积木搭建应用块代码,采取类似R语言 Excel或JSON等 ...
- Android NDK入门实例 计算斐波那契数列一生成jni头文件
最近要用到Android NDK,调用本地代码.就学了下Android NDK,顺便与大家分享.下面以一个具体的实例计算斐波那契数列,说明如何利用Android NDK,调用本地代码.以及比较本地代码 ...
- [linux]ubuntu apt-get安装软件失败
1.首先查看 dns 配置 sudo vi /etc/resolv.conf nameserver 114.114.114.114 nameserver 8.8.8.8 2.修改 apt-get 源 ...
- 【Android每周专题】触摸屏事件
本系列文章均为A2BGeek原创,转载务必在明显处注明: 转载自A2BGeek的[Android每周专题]系列,原文链接:http://blog.csdn.net/benbmw2008/article ...
- nyoj 130 同样的雪花 【哈希】
同样的雪花 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 You may have heard that no two snowflakes are alike. ...
- Codeforces 432D Prefixes and Suffixes(KMP+dp)
题目连接:Codeforces 432D Prefixes and Suffixes 题目大意:给出一个字符串,求全部既是前缀串又是后缀串的字符串出现了几次. 解题思路:依据性质能够依据KMP算法求出 ...
- 自己做站点(二) 20块钱搞定一个企业站:域名&空间申请
域名注冊的话,推荐大家用新网,由于申请费用确实非常低,但续费的价格还是比較高的,所以不妨多申请几年.打开站点: http://www.xinnet.com/ 注冊一个帐号,然后申请域名,你能够看到,费 ...
- hdu1828(线段树——矩形周长并)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1828 分析:与面积不同的地方是还要记录竖的边有几个(num记录),并且当边界重合的时候需要合并(用lb ...
- 分布式消息系统Jafka入门指南之二
分布式消息系统Jafka入门指南之二 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 三.Jafka的文件夹结构 1.安装tree命令 $ sudo yu ...