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. uva 759 - The Return of the Roman Empire

    #include <cstdio> #include <string> #include <map> using namespace std; ; , , , , ...

  2. Mysql学习(慕课学习笔记9)查询、分组

    查找记录 Select select username,id from users; Group by 进行分组 select sex from users group by sex; 分组条件 se ...

  3. 转载:如何查看用户当前shell和修改用户登陆时的默认shell

    转载网址:http://www.51testing.com/html/44/211244-197042.html   1.查看当前使用的shell类型 # echo $SHELL/usr/bin/bs ...

  4. Mac下安装 php+nginx+mysql 开发环境

    一.mysql安装 mysql是安装最简单顺利的 1. 首先去官方网站下载Mac适用的MySQL的dmg包 下载页面 选择图中最下方的dmg包下载进行安装 安装完成后 MySQL的安装目录为/usr/ ...

  5. notepad++搜索结果不显示line XX的方法

    在使用notepad++如果多次搜索,得到的结果中会出现多次line xx: line xx:,造成文件大量垃圾信息的存在,不利于找寻所需的内容,如下图.                对于这种情况, ...

  6. LeetCode_Unique Paths

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  7. linux下core文件设置(转)

    在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数. 1.core文件的生成开 ...

  8. thinkphp分页时修改last显示标题

    需要修改Page.class.php里lastSuffix为false,这样才能修改last显示标题. 然后就可以设置了 或者直接在方法中声明: $p->lastSuffix = false; ...

  9. 【转】AAC ADTS格式分析

    1.ADTS是个啥 ADTS全称是(Audio Data Transport Stream),是AAC的一种十分常见的传输格式. 记得第一次做demux的时候,把AAC音频的ES流从FLV封装格式中抽 ...

  10. PyCharm 4.0下载(附keygen)

    百度网盘:http://pan.baidu.com/s/1nvAdEM9  密码:xfz9