如何从cs文件中调用类来更新或保存数据库中过期的会话

本文关键字:保存 数据库 过期 会话 更新 cs 文件 调用 | 更新日期: 2024-10-21 21:03:19

我有一个类函数,如下&我想使用这个类来调用到我的母版页中。然后,进行登录&将页面的注销时间保存到我的数据库中。

namespace LogInLogOut
{
    public partial class LogInLogOut : System.Web.UI.Page
   {        
       public static void updateLogoutTime(string username, string pcname, string module)
        {
          String connectionString = ConfigurationManager.ConnectionStrings["VSConfigConnectionString"].ConnectionString;
            SqlConnection connection = new SqlConnection(connectionString);
            SqlCommand cmd = new SqlCommand("UPDATE [Access]  set LogOutDate =  '" + DateTime.Today.ToString("dd/MM/yyyy") + "', LogOutTime =  '" + DateTime.Now.ToString("HH:mm:ss") + "' WHERE LoginID ='" + username + "' AND ModuleID = '" + module + "' AND comptname ='" + pcname + "' AND LogOutDate= ' '", connection);
            cmd.Connection.Open();
            cmd.ExecuteNonQuery();
            cmd.Connection.Close();
            cmd.Connection.Dispose();
        }
     }
}

这是主页中用于弹出消息的代码,但我不知道在主页中编写调用上层阶级的调用函数。希望有人能帮我解决这个问题。非常感谢。

protected void Page_Load(object sender, EventArgs e)
    {
        string csname = "timeoutWarning";
        Type cstype = this.GetType();
        if (!Page.ClientScript.IsStartupScriptRegistered(cstype, csname))
        {
            string strconfirm = "<script>" +
                "window.setTimeout('SessionTimeOutHandler()', 10000);" +
                "function SessionTimeOutHandler() { " +
                "alert('Your login session is expired');" +
                "function(){ update(document.LogInLogOut('lblUserName.Text', 'lblComputerName.Text', 'UR')); } " + 
               "window.location='../login.aspx';" +
                " } </script>";
            Page.ClientScript.RegisterStartupScript(cstype, csname, strconfirm, false);
        }
}

如何从cs文件中调用类来更新或保存数据库中过期的会话

您不能在javascript代码中调用这样的服务器函数。

要调用服务器函数,必须先向服务器发送一个请求。这通常是asp.net中的一个Postback。

如果您确实想调用这样的函数,则必须将其标记为WebMethod。Asp.net将隐藏调用该函数所需的所有js。

WebMethods上的这个博客会让你开始。

你的代码应该是这样的:

 [System.Web.Services.WebMethod()] 
 [System.Web.Script.Services.ScriptMethod()] 
 public void LogoutTime(string username, string pcname, string module)
    {
      String connectionString = ConfigurationManager.ConnectionStrings["VSConfigConnectionString"].ConnectionString;
        SqlConnection connection = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand("UPDATE [Access]  set LogOutDate =  '" + DateTime.Today.ToString("dd/MM/yyyy") + "', LogOutTime =  '" + DateTime.Now.ToString("HH:mm:ss") + "' WHERE LoginID ='" + username + "' AND ModuleID = '" + module + "' AND comptname ='" + pcname + "' AND LogOutDate= ' '", connection);
        cmd.Connection.Open();
        cmd.ExecuteNonQuery();
        cmd.Connection.Close();
        cmd.Connection.Dispose();
    }

现在可以使用PageMethods 在javascript中调用此函数

PageMethods.LogoutTime('lblUserName.Text', 'lblComputerName.Text', 'UR', update); 

如果你想把这个函数放在所有页面上,就应该把它放在主页面上,而不是放在单独的页面上。