У меня есть кнопка подтверждения, созданная в другом классе, отличном от кода на странице aspx, с которым я хочу, чтобы кнопка взаимодействовала.
По сути, скажем, у меня есть этот класс подтверждения:
public class Confirmation
{
public void GenerateButtons()
{
Button btnConfirm = new Button();
btnConfirm.Text = "Confirm";
btnConfirm.CommandName = "Variable1,Variable2,Variable3";
_Default def = new _Default();
btnConfirm.Click += new EventHandler(def.btnConfirmBook_Click);
}
}
Приведенный выше код является очень перефразированной версией кода.Но несколько кнопок создаются в цикле и добавляются в таблицу.Таблица отображается на странице Default.aspx, упомянутой ниже.Для каждой строки таблицы значение свойства CommandName
содержит разные значения.
Страница aspx, с которой я работаю, является страницей по умолчанию в веб-приложении .NET Web App.
Я хочу, чтобы событие, инициируемое при нажатии одной из этих кнопок, было перенесено обратно в код страницы Default.aspx (Default.aspx.cs).
Это то, что у меня в Default.aspx.cs:
public void btnConfirm_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
DisplayConfirmation(btn.CommandName);
}
protected void DisplayConfirmation(string result)
{
// I split result and manipulate it as necessary to get a confirmationText string
pnlMainPanel.Visible = false; // This is where it throws NullReferenceException
pnlConfirmationPanel.Visible = true;
lblConfirmationText.Text = confirmationText;
}
Я предполагаю, что он выдает исключение NullReferenceException при попытке изменить видимость панелей, потому что я создал новый экземпляр класса _Default, чтобы я мог установить EventHandler в последней строкепервого фрагмента кода.
Но я не знаю, как заставить это работать.