0

次のサーバーコードがあります。

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 がデータ テーブルをシリアル化できないようです。次に、サーバーからクライアントにレコードを送信し、グリッド ビューにバインドするにはどうすればよいでしょうか?

4

1 に答える 1

1

' SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズ中に循環参照が検出されました。

于 2013-04-15T15:55:04.527 に答える