2016-07-25 134 views
1

我想为所有按钮单击方法创建一个泛型类。我的按钮单击方法在aspx.cs文件中正常工作,但是当我想从泛型类调用此方法时。但参数不通过。有人可以帮帮我吗。这是我的代码。如何从C#中的另一个类调用函数

这是基类

namespace WebApplication1 
{ 
    public partial class Singnup : System.Web.UI.Page 
    { 
     protected void SUpButton_Click(object sender, EventArgs e) 
     { 
      Webapplication2.program.Insert_RData(sender, e); 
     } 
    } 
} 

这是第二类,其中来自我要调用按钮方法

namespace Webapplication2 
{ 
    public class program : WebApplication1.Singnup 
    { 
     public static void Insert_RData(object sender, EventArgs e) 
     { 
      SqlConnection con_Signup = new SqlConnection(ConfigurationManager.ConnectionStrings["myconnectionstring"].ConnectionString); 
      con_Signup.Open(); 
      SqlCommand cmd_check = new SqlCommand("Check_Existing_Email", con_Signup); 
      cmd_check.CommandType = CommandType.StoredProcedure; 
      cmd_check.Parameters.AddWithValue("@mail",EmailId); 
      object i = cmd_check.ExecuteScalar(); 

      if (i != null) 
      { 
       lbforerror.Text = "This Email is already Registered"; 
       lbforerror.Visible = true; 
      } 
+2

您得到的实际错误是什么? – Dispersia

回答

0

你是通过从实例化类Singup到静态类program的信息。标签等将从静态类不可用,因为它没有连接到实际的标签。

如果你想单独按钮点击动作,并且希望他们能够访问表单元素(如lbforerror那么我建议你使用部分类只需使用同一类内的区域进行清理逻辑

#region Button Logic 
//Your logic here 
#endregion //button logic 

的最好方法,是将可重复使用的逻辑分离成一个完全不同的类(在这种情况下,处理的插入),它返回的结果,并在原始类decisioned:

public class ConnectionManager 
{ 
    public object InsertRData(string EmailId) 
    { 
     SqlConnection con_Signup = new SqlConnection(ConfigurationManager.ConnectionStrings["myconnectionstring"].ConnectionString); 
     con_Signup.Open(); 
     SqlCommand cmd_check = new SqlCommand("Check_Existing_Email", con_Signup); 
     cmd_check.CommandType = CommandType.StoredProcedure; 
     cmd_check.Parameters.AddWithValue("@mail", EmailId); 
     object i = cmd_check.ExecuteScalar(); 
     return i; 
    } 
} 

然后您的原始类可以简单地说

public partial class Singnup : System.Web.UI.Page 
{ 
    protected void SUpButton_Click(object sender, EventArgs e) 
    { 
     ConnectionManager mgr = new ConnectionManager(); 
     object i = mgr.Insert_RData("email logic here"); 
     if (i != null) 
     { 
      lbforerror.Text = "This Email is already Registered"; 
      lbforerror.Visible = true; 
     } 
    } 
} 
0

试试下面的代码

namespace WebApplication1 
{ 
    public partial class Singnup : System.Web.UI.Page 
    { 
     protected void SUpButton_Click(object sender, EventArgs e) 
     { 
      string EmailId = "[email protected]"; 
      Webapplication2.program.InsertRData(EmailId); 
     } 
    } 
} 

namespace Webapplication2 
{ 
    public class program : WebApplication1.Singnup 
    { 
     public static void Insert_RData(object sender, EventArgs e) 
     { 
      string EmailId = "[email protected]"; 
      InsertRData(EmailId); 
     } 

     public static void InsertRData(string EmailId) 
     { 
      SqlConnection con_Signup = new SqlConnection(ConfigurationManager.ConnectionStrings["myconnectionstring"].ConnectionString); 
      con_Signup.Open(); 
      SqlCommand cmd_check = new SqlCommand("Check_Existing_Email", con_Signup); 
      cmd_check.CommandType = CommandType.StoredProcedure; 
      cmd_check.Parameters.AddWithValue("@mail", EmailId); 
      object i = cmd_check.ExecuteScalar(); 

      if (i != null) 
      { 
       lbforerror.Text = "This Email is already Registered"; 
       lbforerror.Visible = true; 
      } 
     } 
    } 
} 
相关问题