私はウェブサイトを作成しています。ホームページにはテキストボックスとドロップダウンボックスがあり、ユーザはムービーの名前と検索する言語を入力します。ユーザーが[検索]ボタンをクリックすると、検索結果ページが表示され、検索結果がデータグリッドに表示されます。私はテキストボックスと他のページで使用されるデータグリッドのテキストを渡すためにセッション変数を作成しました。データベースからデータをフェッチするコードはクラスにあります。データベースから受け取った値を別のページのメソッドに渡すにはどうすればいいですか?これは私が書いたコードですが、エラーはありませんが、データグリッドは結果で満たされません。何が間違っているのですか?クラスから別のクラスのメソッドに値を渡す
//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();
}
}
短い文字列を渡すときは、SessionではなくQueryStringsを使うほうがはるかに優れています。セッションを使用する場合、以前の呼び出しの値がまだそこにあることを心配する必要があります。検索ページをレンダリングするとすぐに必要のないデータでセッションを詰まらせます(削除しない限りより多くの時間/労力)、同じセッション変数をアプリケーションのさまざまな場所で使用することについて心配する必要があります(同じオブジェクトを再利用する場合としない場合があります)。原則として、選択肢がない限り、セッションの使用を避ける必要があります。ここには選択肢があります。 – Servy