我有一个对象'User'的会话,我正在尝试将会话对象传递给BLSecurity.cs。此类使用User对象检查登录状态并返回布尔值。
问题在于'Gebruiker',无论如何,都保持无效。
BLSecurity.cs
<div style="position: fixed; top: 0; right: 0; padding: 3em;">
<div id="gear-css">ooo</div>
<div id="gear-js">ooo</div>
</div>
在我的asp项目的主文件中,我在加载函数
中执行以下操作public class BLSecurity {
private wk_Gebruiker gebruiker;
public wk_Gebruiker Gebruiker{
get { return gebruiker; }
set { gebruiker = value; }
}
public BLSecurity() {
}
public bool GebruikerIsIngelogd() {
return Gebruiker != null;
}
public bool GebruikerIsAdmin() {
return Gebruiker != null && Gebruiker.gebruikerniveauID == 1;
}
}
当用户登录时,他会使用labelTest查看姓氏,当他退出时,他会看到“无名字”。所以这部分可行,但将它传递给BLSecurity肯定有问题。
感谢您的帮助!
答案 0 :(得分:1)
问题在于,当我需要函数GebruikerIsIngelogd();
时,我创建了一个新的BLSecurity实例
所以我在我的Load函数中有设置部分
protected void Page_Load(object sender, EventArgs e) {
BLSecurity BLSecurity = new BLSecurity();
BLSecurity.Gebruiker = (wk_Gebruiker)Session["gebruiker"];
SomeFunction();
}
在函数SomeFunction();
中,我需要这些方法。
<强> SomeFunction(); 强>
private void SomeFunction(){
BLSecurity BLSecurity = new BLSecurity(); //here lies the problem
if(BLSecurity.IsLoggedIn()){
...
} else {
...
}
}
问题是DoSomething()
解决方案是将实例移到Page_Load()
之上public partial class WineKeeper : System.Web.UI.MasterPage {
private BLSecurity BLSecurity = new BLSecurity();
protected void Page_Load(object sender, EventArgs e) {
BLSecurity.Gebruiker = (wk_Gebruiker)Session["gebruiker"];
SomeFunction();
}
}
这样我就不会被覆盖,这会导致null。
答案 1 :(得分:0)
而不是:
BLSecurity BLSecurity = new BLSecurity();
你应该做更多这样的事情:
BLSecurity blSecurity = new BLSecurity();
在这种情况下,它可能已经解决了,但根据经验,这是不好的做法,因为你可能会出现歧义错误。