以前用的是asp,在判断登陆的时候,用一个#include就可以了,.net里面也许能用,但是我不想再用。
刚才我google,baidu了一个,没有找到满意的答案。我手头也有几个从网上下载的.net程序,有一款易想商城的,
跟我要做的网站功能比较像,我看了一下它的程序,是用的用户控件来实现的。我也想像那样子做,发现不能实现我要的功能,
哪位帮我看一下,我要实现下面的功能,应该怎么做,谢谢。(分不够可以再加^_^)
下面是我要实现的功能(我都写在page_load里面的:protected void Page_Load(object sender, EventArgs e)
 {
  if (Request.Cookies["vipid"] == null || Request.Cookies["vipid"].Value.ToString() == "")
  {
   Response.Write("<script>alert('请选登陆再访问本页'); location.href='../login.aspx';</script>");
  }
 }
//从数据库中读取一些数据,用来设置用户权限,具体怎么读我就不写那么详细了,只是得出一些要用到的数据
string zh_user=ds.Tables[tablename].Rows[0][columname].ToString();
.........N个string数据(N≌10)..........................................在前台调用的时候,我没有带参数,不会是这个原因导致的吧?
<%@ Register Src="chkuser.ascx" TagName="chkuser" TagPrefix="uc1" %>
<html .....>
.......
<body>
<uc1:chkuser ID="Chkuser1" runat="server" />
.........
</html>
如果用用户控件的话,该如何写呢?如果不用用户控件的话,又该如何做呢?我把那个控件放在<html>标记前也没有用。
下面的是那个易想商城的代码,有需要的人可以看看。我贴一点:public partial class Admin_YX_CheckLogin : System.Web.UI.UserControl
{
    int Column = 1;
    protected void Page_Load(object sender, EventArgs e)
    {
        try
       {
            if (Session["YX_Admin"] == null)
            {
                Response.Write("<script>alert('你没有权限查看,请联系管理员');history.go(-1);</script>");
                Response.End();            }
            else if (Session["YX_Diction"] != null)
            {                string[] diction = (string[])Session["YX_Diction"];
                int tcolumn = Column - 1;
                if (diction[tcolumn].ToString() == "0")
                {
                    Response.Write("<script>alert('你没有权限查看,请联系管理员');history.go(-1);</script>");
                    Response.End();
                }            }
        }
       catch {
           
           Response.Redirect("~/Admin/index.aspx");
     }
   }
    public int _Column {        set {            Column = value;
        }
    }
}它前台的调用:
<%@ Register TagPrefix="ChangeHope" TagName="Chklogin" Src="~/Admin/YX_CheckLogin.ascx" %>
  <ChangeHope:Chklogin _Column="1" ID="chk1" runat="server" />
代码写在<html>标记前的

解决方案 »

  1.   

    用户控件也一样写,写在控件的Page_Load事件里面
      

  2.   

    ...include的方式asp.net也有哈,但不推荐使用
    格式如下
    <!--#include file="Inc/Bottom.aspx"-->
      

  3.   

    我就是想实现像asp中的include那样的功能,但是又不用include方法,要用Web用户控件,也就是.ascs文件,把验证啊,公用的一些信息放在里面,然后在每一个页面调用。于是,我奸了一个chkuser.ascs文件,cs代码如下:protected void Page_Load(object sender, EventArgs e)
     {
      if (Request.Cookies["vipid"] == null || Request.Cookies["vipid"].Value.ToString() == "")
      {
       Response.Write("<script>alert('请选登陆再访问本页'); location.href='../login.aspx';</script>");
      }
      //后面还有一些其它的公用的东西
     }然后在我要验证的页面中拖入这个用户控件,但是发现没有实现我想要的效果,情况就这样。大家告诉我要怎么实现,或者说说你自己是怎么实现的,千万不要告诉我,你在每个页面都写这些验证代码。*_*
      

  4.   

    我学.net也才一个多月时间,对类这个东西掌握的不大好,可以按我上面说的,简单的写一下吗?谢谢。现在急着用这个功能,所以没有时间来弄熟它,会写我肯定不用拿出来麻烦大家了,帮帮忙,谢谢。
      

  5.   

    新建一个class为BasePage,继承自Page
    class BasePage:Page
    {
      protected void VerifyCookies()
     {
      if (Request.Cookies["vipid"] == null || Request.Cookies["vipid"].Value.ToString() == "")
      {
       Response.Write("<script>alert('请选登陆再访问本页'); location.href='../login.aspx';</script>");
      }
     }
    }
    所有需要验证的aspx页面从这个页面集成:
    class Default:BasePage
    {
    protected void Page_Load(object sender, EventArgs e)
    {
      VerifyCookies();
    }
    }
      

  6.   

    请问一下,新建一个class为BasePage这句的意思是:新建一个放在APP_Code文件件下的类文件(比如aa.cs)还是在某一个aspx文件的cs中新建呢?关于类,我因为刚学不太久,只是写一些简单的类,比如数据库连接,下拉框绑定类等,继承一直没有搞过。麻烦多指点一下,谢谢。
    下面是我的操作,我想,因为多个页面要调用它,所以我把它放在app_code 里面。
    一般的aspx文件的cs里面都有这句:public partial class vip_test : System.Web.UI.Page
    所有需要验证的aspx页面从这个页面集成:这句的意思是将后面的System.Web.UI.Page换成basepage还是在public partial class vip_test : System.Web.UI.Page这个的大括弧外再写一个呢?