c# 网络应用程序 |网页被冻结 - 没有加载

c# web application | Web page gets freezed - no loading

我的申请到今天 运行绝对没问题。在将文件上传到网络服务器之前,我通常遵循以下步骤: 1.重新构建解决方案 2.在浏览器中打开所有web表单(调试代码) 3. 发布代码

下面是我的 default.aspx 页面遇到的问题。当我在代码隐藏 (.cs) 文件中添加以下转发器代码时。显示没有编译错误,但在 运行 时间浏览器冻结。什么都没有发生,整个系统都挂了。甚至 Ctrl+Shift+Del 都不起作用。

我的代码说明 - 我在 table 'tb' 中有数据。 'tb' 第一行中的日期已经显示,因此现在我只想在另一个列数较少的 DataTable 中 'tb' table 的剩余 4 行 - link,文本、作者和日期。

因此,我在循环的帮助下创建了一个新的数据表 'n',我已将这 4 列的数据从 'tb' 复制到 'n'。最后,我已将此数据绑定到 aspx 页面上的 Repeater 控件。

请检查并帮助我了解为什么下面的代码也冻结了我的整个应用程序和系统。

C#代码:

DataRow r = tb.Rows[0];
                    r.Delete();
                    tb.AcceptChanges();
                    DataTable n = new DataTable();
                    DataColumn dc;
                    DataRow dr;

                    dc = new DataColumn();
                    dc.DataType = typeof(String);
                    dc.ColumnName = "link";
                    n.Columns.Add(dc);

                    dc = new DataColumn();
                    dc.DataType = typeof(String);
                    dc.ColumnName = "text";
                    n.Columns.Add(dc);

                    dc = new DataColumn();
                    dc.DataType = typeof(String);
                    dc.ColumnName = "author";
                    n.Columns.Add(dc);

                    dc = new DataColumn();
                    dc.DataType = typeof(String);
                    dc.ColumnName = "date";
                    n.Columns.Add(dc);

                    int c = tb.Rows.Count;
                    for (int i = 0; i < c; c++)
                    {
                        dr = n.NewRow();
                        dr["link"] = base_url + "/post/" + tb.Rows[i]["post_type"].ToString() + "/" + tb.Rows[i]["blog_post_id"].ToString() + "/" + u.get_url_friendly_text(30, tb.Rows[i]["blog_Title"].ToString());
                        dr["text"] = tb.Rows[i]["blog_Title"].ToString();
                        dr["author"] = tb.Rows[i]["author"].ToString();
                        dr["date"] = Convert.ToDateTime(tb.Rows[i]["last_updated"]).ToString("MMMM dd, yyyy");
                        n.Rows.Add(dr);
                    }

                    Repeater1.DataSource = n;
                    Repeater1.DataBind();

asp.net 来自 .aspx 页面的转发器控件代码

<div class="col-lg-5 news_col">
                        <div class="news_posts_small">
                            <asp:Repeater ID="Repeater1" runat="server">
                                <ItemTemplate>

                                    <!-- News Posts Small -->
                            <div class="news_post_small">
                                <div class="news_post_small_title"><a href="<%# Eval("link") %>"><%# Eval("text") %></a></div>
                                <div class="news_post_meta">
                                    <ul>
                                        <li><a href="#"><%# Eval("author") %></a></li>
                                        <li><a href="#"><%# Eval("date") %></a></li>
                                    </ul>
                                </div>
                            </div>

                                </ItemTemplate>
                            </asp:Repeater>
                        </div>
                    </div>

仅供参考,我正在为此 Web 应用程序使用 VS 2019 和 asp.net V4.5。

除此页面外 - 其余页面工作正常。此外,当我删除此代码时,此页面也将正常运行。

这可能是因为循环没有结束。

for (int i = 0; i < c; c++)

您的 for 循环在每个循环后向 'c' 变量添加一个 1,这应该是 'i',如下所示:

for (int i = 0; i < c; i++)