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中增加<param name="initParams" value="<%=Parameter%>" />。在value中设置参数,多参数用逗号分隔,如varid=001,emcstype=1。这样参数就传到了siliverlight中。代码如下,此处设Parameter值为varid=001,emcstype=1。即我们传入两个参数varid和emcstype。
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事件中得到参数。如下边代码:
{
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中将参数保存到资源中。
{
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 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变量。
{
/// <summary>
/// 参数列表
/// </summary>
public static IDictionary < string , string > ParameterList = new Dictionary < string , string > ();
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 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 " ];
}
}