我基本上是在尝试创建一个包含所有会话信息的类,然后设置并随意获取它。
这是我的电话Session["SessionInformation"] = new SessionVar.UserSession();
这是那个班级
public static class SessionVar
{
public class UserSession
{
public string FullName
{
get;
set;
}
public string HomeURL
{
get;
set;
}
public bool ValidUser
{
get;
set;
}
public int CountID
{
get;
set;
}
}
}
让我们说在这个例子中我有一个名为CountID_ComboBox的comboBox,而在SelectedIndexChanged上我想将用户特定Session["SessionInformation"] CountID
设置为组合框的值。怎么做的?
protected void CountID_ComboBox_SelectedIndexChanged(object sender, Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs e)
{
//set the session variable here
}
另外,有没有办法在类中循环循环字符串。基本上我想看看该类中的任何变量是否为空。
答案 0 :(得分:2)
因此,您已创建此强类型UserSession
类来处理会话变量。这很好,特别是如果你有一个大型项目,有很多表单和(初级)开发人员。
您已经知道最重要的部分:对于每个新会话,我们都会有一个,只有一个 UserSession
对象。
现在,让我们转到实际使用它的部分。您可以使用((SessionVar.UserSession)Session["SessionInformation"])
检索对象的引用。让我们深入探讨它:
Session["something"]
返回一个对象UserSession
对象((SessionVar.UserSession)Session["SessionInformation"])
并完成了您的投射!现在,让我们说,稍后,您决定将该对象从会话移动到viewstate(我不说这是一个好主意,请注意)。如果你的代码分散在你的项目中,那么管理这种变化将是一件痛苦的事。
因此,我们的想法是拥有一个基页,您的所有网页都将从该网页继承。类似的东西:
public class BasePage : System.Web.UI.Page
{
...
}
然后将代码放在那里检索UserSession
,例如:
public class BasePage : System.Web.UI.Page
{
public UserSession CurrentUserSession
{
get
{
UserSession userSession = null;
if (Session["UserSession"] == null)
{
userSession = new UserSession();
Session["UserSession"] = userSession;
}
else
userSession = (UserSession)Session["UserSession"];
return userSession;
}
private set { }
}
}
奖金:请注意,在上面的代码中,我建议一种方法来确保为当前用户获取一个且只有一个对象。
最后,为了获取空{/ 1}}属性列表,您可以使用以下方法(将其放在string
内):
UserSession
答案 1 :(得分:0)
如果您无法从后面的代码中找到组合框,我将使用发件人来确保我们拥有正确的控件。
var cBox = (RadComboBox)sender;
(SessionVar.UserSession)Session["SessionInformation"].CountID = cBox.SelectedValue;
您的问题的根源似乎是casting。