2016-07-25 64 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; 
      } 
     } 
    } 
} 
相關問題