Отправить экземпляр объекта в веб-проект
Я пишу веб-проект на C# на asp.net. Я хочу передать экземпляр объекта при переходе с одной страницы на другую.
Например у меня есть класс
public partial class A: System.Web.UI.Page{
private Item item = new Item();//I have a class Item
protected void btn1_Click(Object sender,EventArgs e)
{
Response.Redirect("nextpage.aspx");//Here I want to send item object to the nextpage
}
}
И у меня есть класс
public partial class nextpage: System.Web.UI.Page{
Item myItem;
protected void Page_Load(object sender, EventArgs e)
{
myItem = //item sent from page A
}
}
Итак, есть ли способ отправить экземпляр объекта с одной страницы на другую, как отправка переменных через запрос get?
Пожалуйста, не рекомендуйте использовать Session, это не подходит из-за моего алгоритма, потому что у меня много гиперссылок:
for (int i = 0; i < store1.items.Count(); i++) {
HyperLink h = new HyperLink();
h.Text = store1.items[i].Name;
h.NavigateUrl = "item.aspx";//here I must send items[i] when clicking at this hyperlink
this.Form.Controls.Add(h);
this.Form.Controls.Add(new LiteralControl("<br/>"));
}
Поэтому, когда пользователь нажимает на гиперссылку, он / она должен быть перенаправлен на item.aspx, а также отправлять соответствующий элемент на эту страницу.
3 ответа
Вы можете использовать переменную сеанса для отправки объекта через различные веб-страницы в проекте.
public partial class A: System.Web.UI.Page{
private Item item = new Item();//I have a class Item
Session["myItem"]=myItem;
protected void btn1_Click(Object sender,EventArgs e)
{ Response.Redirect("nextpage.aspx");
//Here I want to send item object to the nextpage
}
}
public partial class nextpage: System.Web.UI.Page{
Item myItem;
protected void Page_Load(object sender, EventArgs e)
{
myItem =(Cast to It's Type) Session["myItem"];
}
}
Вы можете установить свой элемент в качестве параметра строки запроса nextpage.aspx
,
Response.Redirect("nextpage.aspx?MyItem=somevalue")
public partial class nextpage: System.Web.UI.Page{
Item myItem;
protected void Page_Load(object sender, EventArgs e)
{
string anIdForTheItem = Request.QueryString["MyItem"];
myItem = myDatabase.Lookup(anIdForTheItem);
// You can also use Request.Params["MyItem"], but be aware that Params
// includes both GET parameters (on the query string) and POST paramaters.
}
}