Asp.net页面传参数给Silverlight

Asp.net页面传参数给siliverlight

  Posted on 2010-08-15 16:03 eric(宽田) 阅读(1) 评论(0) 编辑 收藏 所属分类: Asp.Net

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

  Asp.net页面传参数给siliverlight方法有:

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

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

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

  1.1、传参数

  在siliverlight调用页面的object中增加 。在value中设置参数,多参数用逗号分隔,如varid=001,emcstype=1。这样参数就传到了siliverlight中。代码如下,此处设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%>" />
                <a 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、在Siliverlight中得到传入的参数:

  可以在Siliverlight项目中的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(siliverlight 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(siliverlight 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(siliverlight 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传参数及siliverlight中得到参数方法

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

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

public partial class Trend : UserControl
{
        public Trend()
        {
            IDictionary<StringString> 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"];
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的熊猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值