Я немного застрял в рефакторинге своего кода, чтобы сделать метод доступным для другой страницы. У меня есть следующий код, который доставляет мне проблемы. Может быть, есть лучший взгляд на это? По сути, я пытаюсь сделать функцию статичной, чтобы я мог повторно использовать код, но это сбивает меня с толку.
public static Table BuildProjectTable(string CRNumber)
{
LinkButton SelectLink = new LinkButton();
SelectLink.ID = CRNumber + "," + ShipId + "," + StageId;
ProgressStatus CurrentStatus = AAGlobal.GetProgressStatus(CRNumber, ShipId, StageId);
SelectLink.Text = CurrentStatus.CurrentAssignee;
SelectLink.BackColor = CurrentStatus.CurrentStatus;
SelectLink.ForeColor = Color.White;
BodyCells[CellCount].BackColor = CurrentStatus.CurrentStatus;
BodyCells[CellCount].ForeColor = Color.White;
// This fails because SelectLink_Click isn't static (I think)
//
SelectLink.Click += new EventHandler(SelectLink_Click);
BodyCells[CellCount].Controls.Add(SelectLink);
CellCount++;
}
// If I make this static (fixing above error), Session, Response and lstProcess
// all complain an object reference is required
public void SelectLink_Click(object sender, EventArgs e)
{
LinkButton ClickedLink = (LinkButton)sender;
string[] ClickRef = ClickedLink.ID.ToString().Split(',');
Session["CR_NUMBER"] = ClickRef[0];
Session["SHIP_ID"] = ClickRef[1];
Session["STAGE_ID"] = ClickRef[2];
Session["PROCESS_NAME"] = lstProcess.SelectedValue;
Response.Redirect("~/EditStage.aspx");
}