【问题标题】:How to call a method from aspx.cs to another aspx.cs in same project?如何将 aspx.cs 中的方法调用到同一项目中的另一个 aspx.cs?
【发布时间】:2023-04-04 15:17:01
【问题描述】:

我有 2 个 aspx.cs 页面。 第一页用于登录,登录后我调用发送和电子邮件作为用户登录警报的方法。 登录后,您将转到第二页。 我想在第二页创建另一个按钮,当您按下它时,它将再次发送电子邮件(与第 1 页相同的发送方法)。 我可以在第 2 页中,从第 1 页调用“发送”方法还是必须在每个页面中编写整个方法?

这是第 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("your_email@gmail.com", "your_email@gmail.com", "your_email@gmail.com", "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("your_email@gmail.com", "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 页的代码:

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??
}
}

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    3 怎么样:你在任何页面中都没有 send 方法,而是把它放在一个单独的类中。

    这是正确的编程习惯。

    【讨论】:

    • 在常规 C# 文件中,我可以为方法所在的类创建一个实例,并且该方法只写一次,我可以随时调用她。但我不知道如何使用 aspx.cs 来做到这一点
    • 你不在aspx.cs中。您可以通过将类文件添加到项目中来实现。抱歉,您是否学习过如何使用 asp.NET?您认为 App_Code 文件夹的用途是什么? stackoverflow.com/questions/7480437/…
    • 我是 asp.net 的新手...第二页无法识别第一页,就好像它缺少页面之间的引用,所以我无法从一个页面调用一个方法到另一个页面
    【解决方案2】:

    您像这样创建SendMail 方法static

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

    现在你可以从任何地方调用它,只需在前面附加类名,如下所示:

    UserLogin.SendMail(toList, from, ccList, subject, body);
    

    【讨论】:

      【解决方案3】:

      您需要执行以下任一方法:

      1. 创建一个基本页面类并继承该基本页面类 适当的aspx页面。 (首选方法)

      2. 创建一个静态类并将它们放在那里。

      【讨论】:

        猜你喜欢
        • 2010-10-23
        • 1970-01-01
        • 1970-01-01
        • 2014-06-29
        • 1970-01-01
        • 2012-01-19
        • 1970-01-01
        • 2012-05-28
        • 2022-10-21
        相关资源
        最近更新 更多