C# 从中继器获取ID

C# 从中继器获取ID,c#,sql,asp.net,repeater,asprepeater,C#,Sql,Asp.net,Repeater,Asprepeater,我正在用C#和MS SQL开发一个消息墙,到目前为止,我能够使用repeater生成帖子并检索它们,现在我需要在每个repeater textbox元素的注释部分中进行注释,为此我分配了一个帖子id来关联这两个表 问题是,我陷入了如何从每个repeater元素检索post id的困境,因此当我插入comments表时,我可以将其包括在内,然后一起检索所有内容 这是我的相关代码: public void postear() { string emailcc = Session["EMAIL

我正在用C#和MS SQL开发一个消息墙,到目前为止,我能够使用repeater生成帖子并检索它们,现在我需要在每个repeater textbox元素的注释部分中进行注释,为此我分配了一个帖子id来关联这两个表

问题是,我陷入了如何从每个repeater元素检索post id的困境,因此当我插入comments表时,我可以将其包括在内,然后一起检索所有内容

这是我的相关代码:

public void postear()
{
    string emailcc = Session["EMAIL"].ToString();
    string user_id = Session["ID"].ToString();
    string usrnom = Session["NOMBRE"].ToString();
    string usrfoto = Session["FOTO_URL"].ToString();

    string post_contenido = txtpublica.Text.ToString();
    var post_fecha = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

    using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConexionBD"].ConnectionString))
    {
        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = (@"INSERT INTO MIEMBROS_Posts (POST_USER_ID, POST_CONTENIDO, POST_FECHA, POST_USER_NOMBRE, POST_USER_FOTO) VALUES ('"
            + user_id + "','" + post_contenido + "','" + post_fecha + "','" + usrnom + "','" + usrfoto + "');");
            cmd.Connection = conn;
            conn.Open();
            int rowsAffected = cmd.ExecuteNonQuery();
        }
    }
    txtpublica.Text = "";
    traerposts();
}



public void comentar()
{
    string emailcc = Session["EMAIL"].ToString();
    string user_id = Session["ID"].ToString();
    string usrnom = Session["NOMBRE"].ToString();
    string usrfoto = Session["FOTO_URL"].ToString();

 // This is the problem area 
    foreach (RepeaterItem item in Repeater_UsrPosts.Items)
    {
        Label lbluserID = (Label)item.FindControl("lbluserid");
        string userid_post = lbluserID.Text;
    }

    string buscaid = (string)Repeater_UsrPosts.Items[lblid].FindControl("lbluserid");

    string COMM_contenido = txtpublica.Text.ToString();
    var COMM_fecha = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");


    using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConexionBD"].ConnectionString))
    {
        using (SqlCommand cmd = new SqlCommand())
        {

            cmd.CommandType = CommandType.Text;
            cmd.CommandText = (@"INSERT INTO MIEMBROS_Comments (COMM_USER_ID, COMM_CONTENIDO, COMM_FECHA, COMM_USER_NOMBRE, COMM_USER_FOTO, COMM_POST_ID) VALUES ('"
            + user_id + "','" + COMM_contenido + "','" + COMM_fecha + "','" + usrnom + "','" + usrfoto + "','" + userid_post + "');");
            cmd.Connection = conn;
            conn.Open();
            int rowsAffected = cmd.ExecuteNonQuery();
        }
    }
    txtpublica.Text = "";
    traerposts();
}
和aspx:

<asp:Repeater ID="Repeater_UsrPosts" runat="server">
    <ItemTemplate>

        <!-- Post -->
        <div class="post clearfix">
            <div class="user-block">

                <asp:Label ID="lblid" runat="server" Text="<%#Eval("post_user_id")%>"></asp:Label>
                <img alt="" src="<%#Eval("post_user_foto")%>" class="img-circle img-bordered-sm" />

                <span class="username">
                    <a href="#"><%#Eval("post_user_nombre") %></a>
                    <a href="#" class="pull-right btn-box-tool"><i class="fa fa-times"></i></a>
                </span>
                <span class="description"><%#Eval("post_fecha") %></span>
            </div>
            <!-- /.user-block -->

            <p>

                <%#Eval("post_contenido") %>
            </p>

            <form class="form-horizontal">
                <div class="form-group margin-bottom-none">
                    <div class="col-sm-9">
                        <input class="form-control input-sm" placeholder="Respuesta">
                    </div>
                    <div class="col-sm-3">
                        <button type="submit" class="btn btn-danger pull-right btn-block btn-sm">Enviar</button>
                    </div>
                </div>
            </form>
        </div>
        <!-- /.post -->
    </ItemTemplate>
</asp:Repeater>


羡慕
一个非常简单的例子。这将使用带有
OnCommand
的按钮。这样,您就可以发送一个
CommandArgument
和一个
CommandName
。在Repeater中,可以将字段绑定到CommandArgument,然后在方法中再次读取它

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <%# Eval("myName") %> - <asp:Button ID="Button1" runat="server" Text="Button"
            OnCommand="Button1_Command" CommandName="myCommand"
            CommandArgument='<%# Eval("ID") %>' />
        <br />
    </ItemTemplate>
</asp:Repeater>

不要忘记删除那些
标记。

一个非常简单的例子。这将使用带有
OnCommand
的按钮。这样,您就可以发送一个
CommandArgument
和一个
CommandName
。在Repeater中,可以将字段绑定到CommandArgument,然后在方法中再次读取它

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <%# Eval("myName") %> - <asp:Button ID="Button1" runat="server" Text="Button"
            OnCommand="Button1_Command" CommandName="myCommand"
            CommandArgument='<%# Eval("ID") %>' />
        <br />
    </ItemTemplate>
</asp:Repeater>

不要忘了删除那些
标记。

您应该认真研究参数化查询。您的代码非常容易受到SQL注入的攻击。另外,页面上有多个
表单
标记,这在aspnet中永远不会起作用。请看,您应该真正研究参数化查询。您的代码非常容易受到SQL注入的攻击。另外,页面上有多个
表单
标记,这在aspnet中永远不会起作用。看见