原文: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传值的更多相关文章

  1. .aspx.cs传值与取值

    1:.aspx中post传值 $.post("ABP_ExchangeRatelz.aspx", { option: "isdelete", Ori_Curre ...

  2. asp.net 页面跳转传值的几种方式

    参考地址: http://blog.csdn.net/zzzzzzzert/article/details/8486143 protected void Button1_Click(object se ...

  3. ASP三种常用传值方式:

    ASP 页面(两个aspx页面)传值方式:背景: 两个aspx 页面valuepage.aspx tbusername tbpwdobtainvalue.aspx tbusername tbpwd 1 ...

  4. Prism 4 文档 ---第10章 Silverlight和WPF之间共享代码

        本主题帮助你理解来自Prism的多目标和它的优缺点.多目标的代码针对两个不同的平台有大致相同的代码库.这允许同时保持代码尽可能多一样能够产生针对两种不同技术的二进制文件.在这种情况下,本节介绍 ...

  5. MVC HtmlHelper用法(一)@Html.BeginForm的使用总结

    1.@using(Html.BeginForm()){}                                                      //提交到当前页面 2.@using ...

  6. web前端技术归类

    1.以屏幕可用宽和高的百分比来定义弹出框的宽和高 var trueWidth = $(top.window).width() * 0.9;var trueHeight = $(top.window). ...

  7. MVC把随机产生的字符串转换为图片

    原文:MVC把随机产生的字符串转换为图片 Insus.NET在这篇中<在ASP.NET MVC应用程序中随机获取一个字符串>http://www.cnblogs.com/insus/p/3 ...

  8. Prism 4 文档 ---第8章 导航

        作为同用户具有丰富的交互的客户端应用程序,它的用户界面(UI)将会持续不断的更新来反映用户工作的当前的任务和数据.用户界面可以进行一段时间相当大的变化作为用户交互的应用程序中完成各种任务.通过 ...

  9. Prism 4 文档 ---第5章 实现MVVM模式

        MVVM模式有助于清楚的区分应用程序界面的业务层和展现层.保持一个清晰的应用程序逻辑和UI分离有助于处理开发和设计过程中大量的问题,同时,使得应用程序的测试,维护,和扩展更加容易.MVVM也可 ...

随机推荐

  1. jquery学习之AJAX

    1,关于AJAX的简单介绍 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准 ...

  2. js错误 SyntaxError: missing : after property id

    在用jquery的post方法时 $.post('adminCheckTpmisPlans.do',{'test',str},function(f){ ... }) 报如下错误 SyntaxError ...

  3. UPX 加壳工具:The Ultimate Packer for eXecutables

    UPX (the Ultimate Packer for eXecutables)是一款先进的可运行程序文件压缩器.压缩过的可运行文件体积缩小50%-70% ,这样降低了磁盘占用空间.网络上传下载的时 ...

  4. [docker]docker的四种网络方式

    声明: 本博客欢迎转发,但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 内容系本人学习.研究和总结,如有雷同,实属荣幸! bridge方式(默认) H ...

  5. nginx fastcgi 自定义错误页面

    http{ fastcgi_intercept_errors on; error_page 404 /404.html; } fastcgi_intercept_errors on;必须设置 之后通过 ...

  6. Andriod中绘(画)图----Canvas的使用具体解释

    转载请注明出处:http://blog.csdn.net/qinjuning     因为在网络上找到关于Canvas的使用都比較抽象,或许是我的逻辑思维不太好吧,总是感觉理解起来比較困难, 尤其是对 ...

  7. Linux中下载,压缩,解压等命令

    查看是否和还有一台Linux机器相通命令:ssh    主机名@Ip地址    ,提示输入password.就可以查看远程文件的文件夹 下载远程机器上的文件:scp  主机名@Ip地址:/path/s ...

  8. hdu4405(概率dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4405 题意:跳棋有0~n个格子,每个格子X可以摇一次色子,色子有六面p(1=<p<=6), ...

  9. Codeforces Round #246 (Div. 2) D. Prefixes and Suffixes(后缀数组orKMP)

    D. Prefixes and Suffixes time limit per test 1 second memory limit per test 256 megabytes input stan ...

  10. 用XAML做网页!!—框架

    原文:用XAML做网页!!-框架 上一篇中我进行了一下效果展示和概述,此篇开始将重现我此次尝试的步骤,我想大家通过阅读这些步骤,可以了解到XAML网页排版的方法. 下面就开始编写XAML,首先来定义一 ...