-3

div に投稿を表示し、その下にその投稿の返信を表示し、別の投稿と返信を連続して表示したい...これだけやりましたが、目的の出力が表示されません

 using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.SqlClient;

    public partial class Default3 : System.Web.UI.Page
    {
        int i = 0;
        SqlConnection con = new SqlConnection("server=LOD-PC;uid=sa;pwd=1234;database=db2");
        protected void Page_Load(object sender, EventArgs e)
        {
            con.Open();
            SqlCommand cmd = new SqlCommand("select * from t3 ORDER by id DESC", con);
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                i++;
                string name = dr["name"].ToString();
                string image1 = dr["img"].ToString();
                string image2 = image1.Substring(2).ToString();
                string id = dr["id"].ToString();
                string status = dr["status"].ToString();
                string buttonid = i.ToString();

                Response.Write("<div id='myDiv' class='myDivClass'> <img src='" + image2 + "' style='width:50px; height:50px; float:left; margin-right:6px;' /> <br/> <br/> <span class='name'> <input id='texta' class='texta' type='text' value=" + name.ToString() + " /> <span/> <span class='id'> <input id='textb' class='textb' type='text' value=" + id.ToString() + " /> <span/> <div id='g'><br/><br/><br/><span class='status'> " + status + " </span> <span class='combutton'> <input id='"+buttonid+"'  class='button' type='button' value='Comment'/> </span> </div> </div>");
            }
            con.Close();
        }
    }
4

1 に答える 1

0

SQL クエリに基づいて HTML を出力する場合、値のテキストを引用していません。

value=" + id.ToString() + " />

そうあるべき

    value='" + id.ToString() + "' />

それ以外では、期待どおりに表示されないものについて、より多くの情報を提供する必要があります。ただし、次の点に対処できます。

Response.Write("任意の ASP タグ")

ASP タグは、クライアント側ではなく、サーバー側で処理されます。それらを応答に書き込んでも、それらは実行されません。ブラウザーで HTML の「ソースを表示」すると、HTML ソースにタグが表示されますが、ブラウザーにとって特別な意味はありません。

SqlConnection、SqlCommand、SqlDataReader など IDisposable を実装しているものは破棄してください。usingキーワードは、そこに行く方法です。たとえば、

SqlConnection con = new SqlConnection("server=LOD-PC;uid=sa;pwd=1234;database=db2");

この線

con.Close();

データベースにアクセスして例外がスローされた場合は実行されません。

代わりに、フォームを使用してください

using (SqlConnection con = 
     new SqlConnection("server=LOD-PC;uid=sa;pwd=1234;database=db2"))
{
    // Do stuff with the connection
}

usingブロックがスコープ外になると、(ブロック内で例外がスローされたかどうかに関係なく) 自動的に呼び出されcon.Dispose()、次に が呼び出されますcon.Close()

サーバー=LOD-PC;uid=sa

saユーザーに連絡しないでください。それはセキュリティブリーチを求めています。

于 2013-04-02T18:17:56.513 に答える