【问题标题】:How to add div tag into while loop using asp.net c#如何使用asp.net c#将div标签添加到while循环中
【发布时间】:2023-03-28 06:06:02
【问题描述】:

我像这样创建了一个名为profile.aspx 的网页。

<div id="div1">
    <asp:Label ID="Label1" runat="server" >
        //Name
    </asp:Label>
    <asp:Label ID="Label2" runat="server">
        //Satutes 
    </asp:Label>
</div>

这是该文件的profile.aspx.cs 文件

这个选择查询

cmd.CommandText = "SELECT Name,Status FROM [ProfileStatusPhoto] 
           WHERE Email = '" + Session["Email"].ToString() + "'";

这是while循环

while (dr.Read())
{
    status += dr["Status"].ToString();
    name += dr["name"].ToString();
    Label1.Text = name;
    Label2.Text = status;
}

我不知道,如何在 div 标签上方加入这个循环?

【问题讨论】:

  • 您的 SQL 中存在 SQL 注入漏洞。考虑使用 ORM,例如实体框架。
  • 建议实体框架修复 sql 注入问题就像建议大炮除掉苍蝇一样。
  • 为什么是“那个”?你为什么选择 div 而只选择 div?如果我是正确的,我认为您希望该部分重复,每次显示相应的数据。
  • @JanVanHerck 张贴者显然没有 SQL 经验,因此使用排除任何 SQL 注入攻击机会的 orm 是明智的。坦率地说,这种情况下的问题不是苍蝇(错误),而是墙(编码器)。因此,大炮是合适的工具。

标签: c# asp.net while-loop


【解决方案1】:

如果您想随着时间的推移动态更新您的页面,您应该在.aspx 文件中放置一个计时器并进行页面刷新或执行 AJAX 调用并使用 JavaScript 创建 div。

如果您想使用计时器控制进行部分更新,请查看this thread

【讨论】:

    【解决方案2】:

    你可以做这样的事情

    <div id="container" runat="server">
    
    </div>
    

    在你的页面加载

    cmd.CommandText = "SELECT Name,Status FROM [ProfileStatusPhoto] WHERE Email = @Email";
    cmd.Parameters.AddWithValue("@Email", Session["Email"].ToString());
    while (dr.Read())
    {
        System.Web.UI.HtmlControls.HtmlGenericControl div = 
        new System.Web.UI.HtmlControls.HtmlGenericControl("div");    
        Label nameLabel = new Label();
        status += dr["Status"].ToString();
        name += dr["name"].ToString();
        nameLabel.Text = name;
        Label statusLabel = new Label();
        statusLabel.Text = status;
       div.Controls.Add(nameLabel);
       div.Controls.Add(statusLabel);
       container.Controls.Add(div);
    }
    

    因此您将拥有一个容器,其中为每一对 name-status 您将创建一个带有两个标签的 div

    仅在不是 POstBack 时才加载这些数据

    if (!IsPostBack) {
        //load data
    }
    

    【讨论】:

    • 我把这段代码粘贴到我的cs文件上,cmd.parameters有错误。 cmd.parameters 的命名空间是什么?
    • 这是错误 错误 7“System.Data.SqlClient.SqlCommand”不包含“参数”的定义,并且没有扩展方法“参数”接受“System.Data”类型的第一个参数。可以找到 SqlClient.SqlCommand'(您是否缺少 using 指令或程序集引用?)
    • 谢谢,我使用了那个代码,我把它添加到页面加载方法中,但是当我运行这个页面时,有 IndexOutOfRangeException for name += dr["name"].ToString();我现在该怎么办。
    • 将其更改为 dr["Name"]。如果它不起作用,首先检查它是否不是 DbNULL
    • 它工作正常,但有一些问题。我输入了一个状态,然后单击发布按钮发布。但是那个状态没有显示,然后我刷新了页面,然后我就可以看到了。然后我再次进入另一个状态并刷新了页面,然后它第一次像这样发布===>Prabth Kanishkahi 第二次我说你好===>prabath KanishkaPrabath Kanishkahihello 你能告诉我如何解决这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 2019-09-14
    相关资源
    最近更新 更多