2016-04-06 16 views
0

私は2 aspx.csページがあります。 最初のページはログイン用です。ログインした後、ユーザーがログインしたという警告として電子メールを送信します。 ログイン後、2ページ目に移動します。 2番目のページに別のボタンを作成したいときは、もう一度送信します(1ページの同じ送信方法)。 ページ2の "send"メソッドを呼び出すことができますか、または各ページにメソッド全体を書き込む必要がありますか?aspx.csから同じプロジェクトの別のaspx.csにメソッドを呼び出す方法は?

これは、背後のページ1コード:

public partial class UserLogin : System.Web.UI.Page 
{ 
private string _employee; 
private string _userName; 
private string _loginDatetime; 

protected void Page_Load(object sender, EventArgs e) 
{ 

} 

protected void LoginBtn_Click(object sender, EventArgs e) 
{ 
    _employee = employeeBox.Text; 
    _userName = userBox.Text; 
    _loginDatetime = DateTime.Now.ToString(); 

    SendMail("[email protected]", "[email protected]", "[email protected]", "Login Alert", 
     "Hello " + _employee + ",<Br>User \"" + _userName + "\" just log to the website on the following date: " + DateTime.Now); 

    Response.Redirect("http://localhost:21361/UserDeposit.aspx?_employee=" + employeeBox.Text + "&_userName=" + userBox.Text + "&_loginDatetime=" + _loginDatetime); 
} 

protected string SendMail(string toList, string from, string ccList, string subject, string body) 
{ 

    MailMessage message = new MailMessage(); 
    SmtpClient smtpClient = new SmtpClient(); 
    string msg; 
    try 
    { 
     MailAddress fromAddress = new MailAddress(from); 
     message.From = fromAddress; 
     message.To.Add(toList); 
     if (!string.IsNullOrEmpty(ccList)) 
      message.CC.Add(ccList); 
     message.Subject = subject; 
     message.IsBodyHtml = true; 
     message.Body = body; 
     smtpClient.Host = "smtp.gmail.com"; 
     smtpClient.Port = 587; 
     smtpClient.EnableSsl = true; 
     smtpClient.UseDefaultCredentials = true; 
     smtpClient.Credentials = new NetworkCredential("[email protected]", "password"); 

     smtpClient.Send(message); 
     msg = "Successful"; 
     Response.Write("<script>alert('" + msg + "')</script>"); 
    } 
    catch (Exception ex) 
    { 
     msg = ex.Message; 
     Response.Write("<script>alert('" + msg + "')</script>"); 
    } 
    return msg; 
} 
} 

の背後にある。これは、2ページのコード:任意のページでsendメソッドを持っていますが、それを入れていない:

public partial class UserDeposit : System.Web.UI.Page 
{ 
string _employeeName; 
string _userName; 
string _loginTime; 
DateTime time; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    _employeeName = Request.QueryString["_employee"]; 
    EmployeeName.Text = _employeeName; 

    _userName = Request.QueryString["_userName"]; 
    UserName.Text = _userName; 

    _loginTime = Request.QueryString["_loginDatetime"]; 
    time = DateTime.Parse(_loginTime); 
} 



protected void Button1_Click(object sender, EventArgs e) 
{ 
    //call here the "send mail" method?? 
} 
} 

答えて

2

何3について別のクラス。

これは適切なプログラミング方法です。

+0

public static string SendMail(string toList, string from, string ccList, string subject, string body) 

今、あなたはちょうどこのように、前にクラス名を追加し、どこからでも呼び出すことができますがC#ファイルでは、メソッドがあるクラスのインスタンスを作成することができ、メソッドは一度しか書き込まれないので、いつでも呼び出すことができます。しかし、私はaspx.csでこれを行う方法を知らない – nirh1989

+1

あなたはaspx.cs.ではありませんプロジェクトにクラスファイルを追加します。申し訳ありませんが、asp.NETの使い方を学んだことがありますか? App_Codeフォルダは何だと思いますか? http://stackoverflow.com/questions/7480437/asp-net-app-data-app-code-folders – TomTom

+0

私はasp.netを初めて使用しています...第2ページは最初のページを認識しません。欠落しているようですページ間の参照、私は1ページから別のメソッドを呼び出すことはできません – nirh1989

1

あなたは以下のいずれかの方法を実行する必要があります。

  1. は基本Pageクラスを作成し、すべての 適切なASPXページにそのベースページクラスを継承します。 (推奨メソッド)

  2. 静的クラスを作成してそこに配置します。

0

あなたはこのようSendMail方法static作る:通常の内

UserLogin.SendMail(toList, from, ccList, subject, body); 
関連する問題