silverlight 可以通过属性InitParams 获得参数,如果参数是动态的需要web程序传递的,具体操作如下:

web程序后台:AppID,USERID需要的参数

this.frmReport.Attributes["src"] = String.Format("../../SilverlightApplicationTestPage.aspx?USERNAME={0}&USERID={1}", "张三", "123456");

silverlight项目会生产一个 测试页面文件:SilverlightApplicationTestPage.aspx,修改之后的代码如下:

<%@ Page Language="c#" AutoEventWireup="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>SilverlightApplication</title>
    <style type="text/css">
        html, body
        {
            height: 100%;
            overflow: auto;
        }
        body
        {
            padding: 0;
            margin: 0;
        }
        #silverlightControlHost
        {
            height: 100%;
            text-align: center;
        }
    </style>
    <script type="text/javascript" src="Silverlight.js"></script>
   <script type="text/javascript">
       function onSilverlightError(sender, args) {
           var appSource = "";
           if (sender != null && sender != 0) {
               appSource = sender.getHost().Source;
           }

var errorType = args.ErrorType;
           var iErrorCode = args.ErrorCode;

if (errorType == "ImageError" || errorType == "MediaError") {
               return;
           }

var errMsg = "Silverlight 应用程序中未处理的错误 " + appSource + "\n";

errMsg += "代码: " + iErrorCode + "    \n";
           errMsg += "类别: " + errorType + "       \n";
           errMsg += "消息: " + args.ErrorMessage + "     \n";

if (errorType == "ParserError") {
               errMsg += "文件: " + args.xamlFile + "     \n";
               errMsg += "行: " + args.lineNumber + "     \n";
               errMsg += "位置: " + args.charPosition + "     \n";
           }
           else if (errorType == "RuntimeError") {
               if (args.lineNumber != 0) {
                   errMsg += "行: " + args.lineNumber + "     \n";
                   errMsg += "位置: " + args.charPosition + "     \n";
               }
               errMsg += "方法名称: " + args.methodName + "     \n";
           }

throw new Error(errMsg);
       }

//加载参数
       function WindOnLoad() {
           var xmlDoc;
           var initParamsString = '';
           var url = location.href;
           var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&");
           for (var i = 0; i < paraString.length; i++) {
               initParamsString += paraString[i];
               if (i != paraString.length) {
                   initParamsString += ",";
               }
           }

SetInitParams(initParamsString);
       }

//构造页面
       function SetInitParams(initParamsString) {
           var silverlightControlHtml = ' <object id="silverlightControl" data="data:application/x-silverlight-2," type="application/x-silverlight-2"  width="100%" height="100%">';
           silverlightControlHtml += '<param name="source" value="ClientBin/SilverlightApplication2.xap" />';
           silverlightControlHtml += '<param name="onerror" value="onSilverlightError" />';
           silverlightControlHtml += '<param name="minRuntimeVersion" value="5.0.61118.0" />';
           silverlightControlHtml += ' <param name="autoUpgrade" value="true" />';
           silverlightControlHtml += '<param id="InitParams" name="InitParams" value="' + initParamsString + '"/>';

silverlightControlHtml += '</object>';
           silverlightControlHtml += '<iframe id="_sl_historyFrame" style="visibility: hidden; height: 0; width: 0; border: 0px"></iframe>';

document.getElementById("silverlightControlHost").innerHTML = silverlightControlHtml;
       }
       window.onload = WindOnLoad; 
    </script>
</head>
<body>
    <div id="silverlightControlHost">
    </div>
</body>
</html>

silverlight程序会生成app.xaml 文件作为起始页面,代码如下:

public App()
        {
            this.Startup += this.Application_Startup;
            this.UnhandledException += this.Application_UnhandledException;

InitializeComponent();

}

//在Application_Startup方法中得到web程序的参数,具体代码如下:

private void Application_Startup(object sender, StartupEventArgs e)
        {
            paras = e.InitParams;
            USERNAME= e.InitParams["USERNAME"];
            USERID = e.InitParams["USERID"];
            this.RootVisual = new BeginHome(USERNAME, USERID);//跳转到其他页面
        }

第二种:

在Application_Startup方法中得到web程序的参数,具体代码如下:

private void Application_Startup(object sender, StartupEventArgs e){

IDictionary<String, String> paras = System.Windows.Browser.HtmlPage.Document.QueryString;
AppID = paras["APPID"];
strChartName = paras["ChartName"];

…………}

silverlight+wcf 项目 silverlight获得web程序的参数的更多相关文章

  1. [SL] Silverlight + WCF Demo项目

    I:项目描述:利用 Silverlight+WCF 技术,模拟资源管理器(如图1)功能,通过地址栏输入本地文件夹路径,然后将解析出来的该目录下所有文件(夹)存储到数据库中,然后再加载到界面上显示出来: ...

  2. [silverlight—wcf]参数:调试资源字符串不可用,秘钥和参数通常提供足够的信息用以诊断问题。

    这段时间在做一个项目,有一项需求是上传,经过思考之后,决定采取Silverlight+WCF的方式做上传操作.就在项目做完了之后,本地测试也都没问题,发布到服务器上的时候,顿时就出现故障了.在选择文件 ...

  3. silverlight wcf mvvm

    近期工作比較忙.也没有时间发表新内容,今天有点时间,就顺便写点,说说近期开发的一套系统心得. 我刚去这个公司已经将前端确定要用Silverlight,我不知道为什么要选择这个,或许是为以后转C/S系统 ...

  4. docker简单入门之使用docker容器部署简单的java web开源项目jpress博客程序

    一.在centos7.3上安装docker 前置条件 x86_64-bit 系统 kernel 3.10+ .检查内核版本,返回的值大于3.10即可 [root@node1 ~]# uname -r ...

  5. WCF 项目应用连载[2] - 创建Lig日志系统

    WCF 项目应用连载[1] - 索引 - 轻量级的Log系统 - Lig Sample -序 现在我们创建一个Lig工程 - Litelog 2.1 创建Lig服务 _________________ ...

  6. 旧 WCF 项目迁移到 asp.net core + gRPC 的尝试

    一个月前,公司的运行WCF的windows服务器down掉了,由于 AWS 没有通知,没有能第一时间发现问题. 所以,客户提出将WCF服务由C#改为JAVA,在Linux上面运行:一方面,AWS对Li ...

  7. web程序的路径笔记

    "/"与”\“区别:”/“是unix系统区分文件层级的标志,因为当前web应用程序在服务器端大都使用基于unix系统开发的操作系统,所以web程序包括浏览器里url都遵以”/“来区 ...

  8. .NET WEB程序员需要掌握的技能

    本来这个是我给我们公司入职的新人做一个参考,由于 @张善友 老师在他的微信号转了我的这篇文章<<.Net WEB 程序员需要掌握的技能>>,很多人觉得比较有用,说是看了后知道一 ...

  9. (转)对《30个提高Web程序执行效率的好经验》的理解

    阅读了博客园发布的IT文章<30个提高Web程序执行效率的好经验>,这30条准则对我们web开发是非常有用的,不过大家可能对其中的一些准则是知其然而不知其所以然. 下面是我对这些准则的理解 ...

随机推荐

  1. ORACLE中将数字转换为英文

    SELECT LEVEL, to_char(to_date(LEVEL,'J'),'Jsp') FROM dual CONNECT 运行结果如下图所示:   说明: TO_CHAR(aDate,'JS ...

  2. effective条款15,在资源管理类中小心copying行为

    class A { private: int *p; void lock(){ cout << p << "is lock" << endl; ...

  3. CSS应用二

    样式中的顺序问题. 如:padding,margin,border,等,都是按照顺时针方向赋值的,及上右下左. Padding:1px 2px 3px 4px;(top:1px;right:2px;b ...

  4. MySQL按照汉字的拼音排序(转)

    按照汉字的拼音排序,用的比较多是在人名的排序中,按照姓氏的拼音字母,从A到Z排序: 如果存储姓名的字段采用的是GBK字符集,那就好办了,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字37 ...

  5. Linux_access the file or directory which start with "-"

    cd -- filename/dirName [ccmobil@vm-a65a-fc19 wstemp]$ cd -/ -bash: cd: -: invalid option cd: usage: ...

  6. 原生js制作弹出框

    完整代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  7. JS获取select的值

    记录一下JS获取select的value值和选项值 <select id="video_status"> <option value="1" ...

  8. 《javascript权威指南》第9章 例9-8源码

    //创建一个新的枚举类型 //不能使用它来创建该类型的新实例 function Enumeration(nameToValues){ var Enumeration = function(){thro ...

  9. Chrome下的语音控制框架MyVoix.js使用篇(三)

    上篇文末已经提及,google分析出的单词可能和大家预想的输入有差别.上文我们通过预先绑定多个语音指令,权益地解决了这个问题.在这一章,我将介绍myvoix.js框架自带的smart learning ...

  10. angular+bootstrap分页指令案例

    AngularJS中不仅内置了许多指令,而且开发人员也可以通过自定义指令来完成特殊操作,指令创建成功后可以到处复用. Web应用中的分页处理最为常见,我们可以将分页模块编写成一个可以复用的Angula ...