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 でこの関数を呼び出すことができます。PageMethods

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

別のページではなく、すべてのページに必要な場合は、その関数をマスター ページに配置する必要があります。

于 2012-08-07T04:22:34.097 に答える