2016-07-25 4 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; 
      } 
     } 
    } 
} 
Смежные вопросы