将值从类传递到另一个类的方法

时间:2012-02-15 16:11:05

标签: c#

我正在创建一个网站。主页有一个文本框和下拉框,用户可在其中输入要搜索的电影名称和语言。当用户单击“搜索”按钮时,将显示搜索结果页面,搜索结果应显示在数据网格中。我创建了会话变量来传递文本框和数据网格的文本,以便在另一个页面中使用。从数据库中获取数据的代码在一个类中如何将从数据库接收的值传递给另一个页面的方法?这是我写的代码,它没有给出任何错误,但数据网格没有填满结果我做错了什么?

 //Code for search button in home page
 protected void Btnsearch_Click(object sender, EventArgs e)
    {
        Response.Redirect("SearchResults.aspx");
        Session["moviename"] = TextBox3.Text;
        Session["language"] = DropDownList1.Text;
    }

 //Code to fetch data from database 
 public class movie
   {
    public SqlDataAdapter searchmovie(object moviename, object language)
    {
        connection.con.Open();
                SqlDataAdapter adapter1 = new SqlDataAdapter("select 
                               select movieName,language,director,price from movie    
                                         where moviename = '" + moviename + "' and 
                                         language = '" + language + "'", 
                return adapter1;

}
  }

  //Code in search page to fill data grid with search results
      public partial class SearchResults : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       movie m = new movie();
       SqlDataAdapter movieDetails = m.searchmovie(Session["moviename"],   
                                     Session["language"]);
       DataSet data = new DataSet();
       movieDetails.Fill(data, "movieD");
       GridView1.DataSource = data.Tables["movieD"];
       GridView1.DataBind();
    }
}

2 个答案:

答案 0 :(得分:2)

在重定向之前设置会话变量,如下所示:

protected void Btnsearch_Click(object sender, EventArgs e)
{
    Session["moviename"] = TextBox3.Text;
    Session["language"] = DropDownList1.Text;
    Response.Redirect("SearchResults.aspx");        
}

答案 1 :(得分:2)

我建议避免将Session作为数据存储。

ASP.NET有一个很好的功能,称为交叉发布:它使您能够将所有页面控制和状态从一个页面转换到另一个页面。

http://msdn.microsoft.com/en-us/library/ms178139.aspx

就个人而言,我真的很喜欢功能,因为你可以将页面称为对象,具有控件暴露的广告属性!