• Asp.net页面传参数给Silverlight


    在Asp.net页面上增加Silverlight,现在需要传参数给Silverlight。下边列举一些从页面传参数给Silverlight和Silverlight中取参数的方法。

     Asp.net页面传参数给Silverlight方法有:
      一、通过param传参数及Silverlight中得到参数方法
      二、通过Url传参数及Silverlight中得到参数方法

     一、通过param传参数及Silverlight中得到参数方法

     1.1、传参数

      在Silverlight调用页面的object中增加<param name="initParams" value="<%=Parameter%>" />。在value中设置参数,多参数用逗号分隔,如varid=001,emcstype=1。这样参数就传到了Silverlight中。代码如下,此处设Parameter值为varid=001,emcstype=1。即我们传入两个参数varid和emcstype。

                <object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
                    width
    ="100%" height="100%">
                    
    <param name="source" value="../ClientBin/Iaddtech.Environmental.Web.Silverlight.xap" />
                    
    <param name="onError" value="onSilverlightError" />
                    
    <param name="background" value="white" />
                    
    <param name="minRuntimeVersion" value="3.0.40818.0" />
                    
    <param name="onLoad" value="siliverLoaded" />
                    
    <param name="autoUpgrade" value="true" />
                    
    <param name="Windowless" value="true" />
                    
    <param name="initParams" value="<%=Parameter%>" />
                    
    <href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40818.0" style="text-decoration: none">
                        
    <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight"
                            style
    ="border-style: none" />
                    
    </a>
                
    </object>


    1.2、在Silverlight中得到传入的参数:

      可以在Silverlight项目中的App.xaml中的Application_Startup事件中得到参数。如下边代码:

    private void Application_Startup(object sender, StartupEventArgs e)
    {
                
    if (e.InitParams.Count > 1)
                {
                    
    //参数1
                    string variableID = e.InitParams["varid"].ToString();
                    
    //参数2
                    string emcstype = e.InitParams["emcstype"].ToString();
                }
    }

    1.3、将得到参数传入到页面(userControl)方法

       1.3.1利资源

        在Siliverlight页面中将得到的参数放入资源中。在页面中调用资源得到参数。方法为首先在App的Application_Startup中将参数保存到资源中。 

    private void Application_Startup(object sender, StartupEventArgs e)
    {
                   
    if (e.InitParams.Count > 1)
                    {
                        
    //参数1
                        string variableID = e.InitParams["varid"].ToString();
                        
    //参数放入资源中
                        App.Current.Resources.Add("varid", variableID);
                        
    //参数2
                        string emcstype = e.InitParams["emcstype"].ToString();
                        
    //参数放入资源中
                        App.Current.Resources.Add("emcstype", emcstype);
                    }
                    
    //设置启动页面,此处调用了Trend.xaml
                    this.RootVisual = new Trend();
    }

        在Trend(Silverlight userControl)页面中得到参数。

        public partial class Trend : UserControl
        {
            
    public Trend()
            {
                InitializeComponent();
                
    if (App.Current.Resources.Count>0)
                {
                    
    //得到参数
                    string varidValue = App.Current.Resources["varid"].ToString();
                    
    string emcstypeValue = App.Current.Resources["emcstype"].ToString();
                }
            }
        }


      1.3.2利用构造函数

         在Application_Startup通过页面的构造函数将参数传过去。

    //得到参数并传参数到页面
    private void Application_Startup(object sender, StartupEventArgs e)
    {
                   
    if (e.InitParams.Count > 1)
                    {
                        
    //参数1
                        string variableID = e.InitParams["varid"].ToString();
                        
    //参数放入资源中
                        App.Current.Resources.Add("varid", variableID);
                        
    //参数2
                        string emcstype = e.InitParams["emcstype"].ToString();
                        
    //参数放入资源中
                        App.Current.Resources.Add("emcstype", emcstype);
                    }
                    
    //设置启动页面,调用Trend.xaml页面中的带参数的构造函数
                    this.RootVisual = new Trend(variableID, emcstype);
    }

        在Trend(Silverlight userControl)页面中得到参数。

        //得到参数
        public partial class Trend : UserControl
        {
            
    public Trend(string varid, string emcstype)
            {
                InitializeComponent();
                
    //得到参数
                string varidValue = varid;
                
    string emcstypeValue = emcstype;
            }
        }


      1.3.3利用公共属性或变量

         在App中建立公共变量或属性,此处为变量,其它页面调用App的属性或变量得到。如下边建立了ParameterList变量。

    public partial class App : Application
    {
            
    /// <summary>
            
    /// 参数列表
            
    /// </summary>
            public static IDictionary<stringstring> ParameterList = new Dictionary<stringstring>();
            
    private void Application_Startup(object sender, StartupEventArgs e)
            {
                
    if (e.InitParams.Count > 1)
                {
                    
    //参数1
                    ParameterList = e.InitParams;
                }
            }
    }

      在Trend(Silverlight userControl)页面中得到参数。

        //得到参数
        public partial class Trend : UserControl
        {
            
    public Trend()
            {
                InitializeComponent();
                App myApp 
    = App.Current as App;
                
    //得到参数
                string varidValue = myApp.ParameterList["varid"];
                
    string emcstypeValue = myApp.ParameterList["emcstype"];
            }
        }


     二、通过Url传参数及Silverlight中得到参数方法

       除了以上传参数外,还可以通过url传参数方法。此方法和我们平常得到url参数差不多。

      当Url为:http://www.xxx.com?varid=001&emcstype=1时,在Trend(Silverlight userControl)页面中得到参数方法 如下:

    public partial class Trend : UserControl
    {
            
    public Trend()
            {
                IDictionary
    <String, String> paraList = HtmlPage.Document.QueryString;
                
    if (paraList == null || paraList.Count < 1 || !paraList.ContainsKey("varid"|| !paraList.ContainsKey("emcstype"))
                {
                    ShowInfo(
    "没有传入参数");
                    
    return;
                }
             
    //得到参数
                string varidValue = paraList["varid"];
                
    string emcstypeValue = paraList["emcstype"];
        }
    }


    以上只是个人的小结。

  • 相关阅读:
    【秋招必备】Redis面试题(2021最新版)
    【秋招必备】Spring Boot面试题(2021最新版)
    【秋招必备】Java基础知识面试题(2021最新版)
    用友二面:如何设计一个高可用、高并发秒杀系统
    万字长文,带你深入理解Java虚拟机!
    小米面试官:说说Spring源码里面的Bean的生命周期!
    苏宁易购三面:写一个脚本获取Linux系统CPU的详细信息,并说出原理!
    易错点。
    APP间传递消息
    KVC, KVO
  • 原文地址:https://www.cnblogs.com/scottckt/p/1800083.html
Copyright © 2020-2023  润新知