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. Linux 开机报 or type Control-D to continue

    解决步骤: 1.输入root密码 2.看是哪个盘报的错,我这边是sda3(可能会是不同的盘),就是代码中标为FAIL 输入以下命令fsck -y /dev/sda3

  2. partial修饰符,可以让同类命名空间下出现重名

    public partial class Person { } public partial class Person { } partial修饰符,可以让同类命名空间下出现重名,两个类其实是一个类, ...

  3. poj2187 Beauty Contest(旋转卡壳)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Beauty Contest Time Limit: 3000MS   Memor ...

  4. Turtle库

    下列turtle库的简单常用指令 forward(distance) #将箭头移到某一指定坐标 left(angel) right(angel) penup() #提起笔,用于另起一个地方绘制时 ...

  5. Content-Disposition的作用及用法

    Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件.Content-disposition其实可以控制用户请求所得的内容存为一个 ...

  6. 转载:[Java]读取文件方法大全

    转载网址:http://www.cnblogs.com/lovebread/archive/2009/11/23/1609122.html 1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取 ...

  7. 如何在symfony 控制器里面创建soap web service

    通过一些工具将一个控制器设置成一个soap服务将会非常简单.首先,你必须安装了php soap扩展.由于php soap扩展现在不能生成wsdl,你要么自己从头开始创建要模使用第三方生成器. php中 ...

  8. RF学习过程中遇到的问题

    1.写了一个打开浏览器的用例,执行用例时报需要对应的浏览器驱动,此时应下载对应的浏览器驱动,把该执行文件放到python的安装根目录下,再执行用例就成功了 2.日志不见的问题:需要杀进程

  9. Abstract Factory模式的几个要点

    1.如果没有应对“多系列对象构建”的需求变化,则没有必要使用Abstract Factory模式.这时候使用简单的静态工厂完全可以.2.“系列对象”指的是这些对象之间有相互依赖.或作用的关系3.Abs ...

  10. 小qyvlik 先看两个视频,和 QtQuick UI 问答

    http://edu.csdn.net/course/detail/1042 http://edu.csdn.net/course/detail/335 http://blog.csdn.net/qy ...