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. C#进程与线程

    public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { / ...

  2. 转自:Tsihang 三层网络设备对于IP报文的分片和重组处理原理

    三层网络设备对于IP报文的分片和重组处理原理 对于网络分片,我一年前就想整理出来,虽然说网络上的资料很多,但是真正掌握精髓的除非真正做过分片程序,不然很难将协议栈整体联系起来理解.这篇文章,包括设计分 ...

  3. 文成小盆友python-num4 装饰器,内置函数

    一 .python 内置函数补充 chr()  -- 返回所给参数对应的 ASCII 对应的字符,与ord()相反 # -*- coding:utf-8 -*- # Author:wencheng.z ...

  4. HTML&CSS基础学习笔记1.11—导航栏

    上文我们介绍到的<a>标签,由于<a>标签可以用来跳转,所以我们可以拿<a>标签来生成网页的导航栏. 其实在实际运用中,<a>标签就经常会被用来生成导航 ...

  5. C 产生随机码

    #include<stdio.h>#include<malloc.h>#include<conio.h>#include<stdlib.h>#inclu ...

  6. pod应用--备用

    一.概要 iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库. 二.安装 由于 ...

  7. Lintcode--005(最长公共子序列)

    Given two strings, find the longest common subsequence (LCS).     最长公共子序列 Your code should return th ...

  8. cf Sereja and Array

    http://codeforces.com/contest/315/problem/B #include <cstdio> #include <cstring> #includ ...

  9. 智能卡 APTU命令

    一条命令APDU含有一个头标和一个本体.本体可有不同长度,或者在相关数据字段为空时,整个可以不存 在. 头标由四个数据元组成,它们是类CLA(ClAss)字节,命令INS(INStructic,n)字 ...

  10. STL 查找vector容器中的指定对象:find()与find_if()算法

    1 从vector容器中查找指定对象:find()算法 STL的通用算法find()和find_if()可以查找指定对象,参数1,即首iterator指着开始的位置,参数2,即次iterator指着停 ...