0

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

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);
        }
}
4

1 回答 1

0

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

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

如果您确实想调用这样的函数,则必须将其标记为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();
    }

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

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

如果您想在所有页面上而不是在单独的页面上,您应该将该功能放在您的母版页中。

于 2012-08-07T04:22:34.097 回答