次のサーバーコードがあります。
Methods.cs
public DataTable GetAllCreditCards()
{
string connStr = ConfigurationManager.ConnectionStrings["BankDB"].ConnectionString;
SqlConnection conn = new SqlConnection(connStr);
SqlDataAdapter adapter = new SqlDataAdapter();
DataTable data_table = new DataTable();
conn.Open();
SqlCommand cmd = new SqlCommand("GetAllAccountDetails", conn);
cmd.CommandType = CommandType.StoredProcedure;
adapter.SelectCommand = cmd;
adapter.Fill(data_table);
conn.Close();
return data_table;
}
Handler.ashx
if (function.Equals("GetAllCreditCards"))
{
DataTable text = m.GetAllCreditCards();
System.Web.Script.Serialization.JavaScriptSerializer oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string json = oSerializer.Serialize(text);
context.Response.Write(json);
}
次のクライアントコードがあります。
ホームページ.aspx
if (TextBox_Function.Text.Equals("GetAllCreditCards"))
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:4000/Handler.ashx?function=" + TextBox_Function.Text);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
String answer = returnResponse(response);
System.Web.Script.Serialization.JavaScriptSerializer oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
DataTable data_table = oSerializer.Deserialize<DataTable>(answer);
Session["data_table"] = data_table;
Response.Redirect("Results_Reader.aspx");
}
Results_Reader.aspx
protected void Page_Load(object sender, EventArgs e)
{
DataTable data_table = (DataTable)Session["data_table"];
GridView_DataTable.DataSource = data_table;
GridView_DataTable.DataBind();
}
私がやろうとしているのは、サーバーからデータベース データを取得し、それをデータ テーブルに入れ、データ テーブルをクライアントに送信し、そのデータ テーブルをグリッド ビューにバインドすることです。
クライアントを実行して変数関数に「GetAllCreditCards」と入力しようとすると、サーバー プロジェクトで次のエラーが発生します。
A circular reference was detected while serializing an object of type 'System.Reflection.RuntimeModule'.
私は何を間違っていますか?データベース データを渡し、それをクライアント側のグリッド ビューにバインドしたいだけです。それだけです。
編集
JavaScriptSerializer がデータ テーブルをシリアル化できないようです。次に、サーバーからクライアントにレコードを送信し、グリッド ビューにバインドするにはどうすればよいでしょうか?