Отправить экземпляр объекта в веб-проект

Я пишу веб-проект на 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 ответа

Вы пытались использовать ASP.Net Cache?

Вы можете использовать переменную сеанса для отправки объекта через различные веб-страницы в проекте.

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.
    }       
}
Другие вопросы по тегам