• silverlight+wcf 项目 silverlight获得web程序的参数


    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 + " ";

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

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

               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; 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"];

    …………}

  • 相关阅读:
    整理打印PI值
    使用自连接、for xml path('')和stuff合并显示多行数据到一行中(转)
    ThinkPHP+jQuery EasyUI Datagrid查询数据的简单处理
    ThinkPHP学习(三)
    Apache+PHP配置PATHINFO的一个小问题
    ThinkPHP学习(二)
    接口签名工具类
    RSA加密和解密工具类
    kafka项目中踩到的一个坑(客户端和服务器端版本不一致问题)
    自己实现字符串转整数(不使用JDK的字符串转整数的方法)
  • 原文地址:https://www.cnblogs.com/xuxin-1989/p/3652209.html
Copyright © 2020-2023  润新知