关于ASP.NET中母版页后台代码
各位前辈好,小弟想问个问题,如果很弱智,还请不要笑话我啊。假如一个网站,只允许登录访问。网站有个masterPage,其他所有web窗体都会引用它。因为是登录访问,所以每...
各位前辈好,小弟想问个问题,如果很弱智,还请不要笑话我啊。
假如一个网站,只允许登录访问。网站有个masterPage,其他所有web窗体都会引用它。因为是登录访问,所以每个页面都可以用HttpContext.Current.User.Identity.Name取得登录用户的ID。这个网站的数据库设计很奇怪,有个用户ID,另外一个表里还有个与用户ID相对应的副ID,所有web窗体后台代码只认副ID,那么我每一页都要先读用户ID,然后通过数据库查询得到对应的副ID。为了省事,我想在masterPage里就完成从用户ID到副ID的转换。目前我的代码写到这样了:
//这是masterPage的代码:
private int _subId;
private int _userId=userDetail.userId();//这是我写的一个类,专门取用户ID值
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ToShopId(out _subId);
}
}
public int SubId
{
get
{
return _subId;
}
}
protected void ToSubId(out int argSubId)
{
argSubId = //数据库查询_userId得到匹配的subId;
}
out这个修饰符我从来没有用过,也不知道用对没有。我以前是做前台的,上个月才开始学asp.net,很多东西都是查了资料东平西凑来的,让各位见笑了。
我的思想就是在页面Load的时候,通过SubId函数为_subId赋值,然后应用这个masterPage的web窗体通过masterPage这个类的属性SubId取得与用户ID相对应的副ID。不知道我的写法上,有什么错误?还行前辈们指教 展开
假如一个网站,只允许登录访问。网站有个masterPage,其他所有web窗体都会引用它。因为是登录访问,所以每个页面都可以用HttpContext.Current.User.Identity.Name取得登录用户的ID。这个网站的数据库设计很奇怪,有个用户ID,另外一个表里还有个与用户ID相对应的副ID,所有web窗体后台代码只认副ID,那么我每一页都要先读用户ID,然后通过数据库查询得到对应的副ID。为了省事,我想在masterPage里就完成从用户ID到副ID的转换。目前我的代码写到这样了:
//这是masterPage的代码:
private int _subId;
private int _userId=userDetail.userId();//这是我写的一个类,专门取用户ID值
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ToShopId(out _subId);
}
}
public int SubId
{
get
{
return _subId;
}
}
protected void ToSubId(out int argSubId)
{
argSubId = //数据库查询_userId得到匹配的subId;
}
out这个修饰符我从来没有用过,也不知道用对没有。我以前是做前台的,上个月才开始学asp.net,很多东西都是查了资料东平西凑来的,让各位见笑了。
我的思想就是在页面Load的时候,通过SubId函数为_subId赋值,然后应用这个masterPage的web窗体通过masterPage这个类的属性SubId取得与用户ID相对应的副ID。不知道我的写法上,有什么错误?还行前辈们指教 展开
1个回答
展开全部
如果用户副id只是使用一次的话可以简单写,只要一个属性就可以了,不需要其他变量定义和函数,Page_Load也不要写什么。
public int SubId
{
get
{
int _userId=userDetail.userId();
return XXX(_userId);//XXX为数据库查询函数,返回int
}
}
如果要多次使用用户副id,为了避免频繁读取数据库,需要将用户副id临时存储,可以用Session或ViewState,Session数据存储在服务器端,从用户登录到用户退出都有效,ViewState在当前页面有效。
public int SubId
{
get
{
if(Session["UserSubId"]==null)
{
int _userId=userDetail.userId();
Session.Add("UserSubId",XXX(_userId));
}
return Convert.ToInt32(Session["UserSubId"]);
}
}
public int SubId
{
get
{
int _userId=userDetail.userId();
return XXX(_userId);//XXX为数据库查询函数,返回int
}
}
如果要多次使用用户副id,为了避免频繁读取数据库,需要将用户副id临时存储,可以用Session或ViewState,Session数据存储在服务器端,从用户登录到用户退出都有效,ViewState在当前页面有效。
public int SubId
{
get
{
if(Session["UserSubId"]==null)
{
int _userId=userDetail.userId();
Session.Add("UserSubId",XXX(_userId));
}
return Convert.ToInt32(Session["UserSubId"]);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询