您的位置:首页 > 编程语言 > ASP

Silverlight中如何与Asp.Net交换变量,取得Session的值问题?

2009-11-22 16:51 453 查看
前些日子做个项目,在Silverlight的Page.xaml页面中读取数据库的信息,要将此登录信息传递给Aspx页面,涉及到Silverlight与Asp.Net交互的问题。

public static string UserPassWord;
public static string UserID;
public static string RoleID;
HtmlWindow html = HtmlPage.Window;
//选择人员读取人员信息
private void comUser_SelectionChanged(object sender, Telerik.Windows.Controls.SelectionChangedEventArgs e)
{
if (comUser.SelectedValue != null)
{
WcfServiceClient ClientInfo = new WcfServiceClient();
ClientInfo.GetUserInfoCompleted += new EventHandler<GetUserInfoCompletedEventArgs>(ClientInfo_GetUserInfoCompletedEventArgs);
ClientInfo.GetUserInfoAsync(comUser.SelectedValue.ToString());
}
}
//记录人员的登录信息
void ClientInfo_GetUserInfoCompletedEventArgs(object sender, GetUserInfoCompletedEventArgs e)
{
if (e.Error == null)
{
foreach (var its in e.Result) //e.Result就是我们从WCF服务得到的返回值
{
UserPassWord = its.PassWord;
UserID = its.UserID.ToString();
RoleID = its.RoleID.ToString();
}
}
else
{
html.Alert(ErrorMessage);
}
}


这里要将UserID、RoleID的值传递给一个Aspx页面,变成登录的Session变量,如何解决!

这里用一个简单的方法来实现。

//登录系统,记录登录人员ID.
private void btnLogin_Click(object sender, RoutedEventArgs e)
{
if (txtPassWord.Password == UserPassWord)
{
string url = "http://localhost:24690/MasterMain.aspx?USERID=" + UserID+"&ROLEID="+RoleID;
html.Navigate(new Uri(url));
}
else
{
string Message = "友情警告:口令不正确!请核实!";
html.Alert(Message);
}
}


这里如果是要将Aspx中的值传递给Silverlight中Xaml的页面,如何解决呢?这里给个思路!

在Silverlight2中可以用那个InitParameter来传递,但在Sl3中又改变了方式:

<param name="initparams" value="path=GeneratedImages/dzc_output.xml,zoomIn=3" />
App.Xaml.cs里

if (e.InitParams != null)
{
foreach (var data in e.InitParams)
{
.....
}
}
这里还可以采用以下直接的方法:
把参数直接存在: <input type="hidden" id="YouParaName" name="YouParaName" value="YouParaValue" >
然后在SL里面:HtmlPage.Document.GetElementById("YouParaName").GetAttribute("value")
这样也很方便,而且更容易理解,而且方便Post到服务器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: