C# 方法在asp.net页面加载期间触发两次

C# 方法在asp.net页面加载期间触发两次,c#,asp.net,C#,Asp.net,我知道这样的问题已经被问到了,我也经历了其中的大部分,但没有人让我满意,所以我发布了我的一个。附件是我的密码。实际上,我正在从databale的代码构建一个jquery库。参见代码: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DisplayHotProducts();

我知道这样的问题已经被问到了,我也经历了其中的大部分,但没有人让我满意,所以我发布了我的一个。附件是我的密码。实际上,我正在从databale的代码构建一个jquery库。参见代码:

  protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DisplayHotProducts();
            }
        }



        private void DisplayHotProducts()
        {
            var dt = ProductData.GetAllHotProducsts();
            if (dt != null && dt.Rows.Count > 0)
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine(" <div id='spotlight_products' class='widget_box center_box'>");
                sb.AppendLine("<div class='wintitle'>");
                sb.AppendLine(" <div class='inner_wintitle'>");
                sb.AppendLine("  Hot Products</div></div>");
                sb.AppendLine("<div class='winbody'>");
                sb.AppendLine("<div class='mall_focus' id='mall_focus'>");
                sb.AppendLine("<a id='bp_carousel_prev'>prev</a>");
                sb.AppendLine("<a id='bp_carousel_next'>next</a>");
                sb.AppendLine("<div id='bp_carousel'>");
                sb.AppendLine(" <div class='carousel_list'>");


                for (int i = 0; i < dt.Rows.Count; i=i+5)
                {

                    sb.AppendLine(" <div class='product_list'>");
                    sb.AppendLine("<div class='bestproduct_wrapper'> <div class='bestproduct'>");
                    sb.AppendLine("   <div class='icon_best'></div>");
                    sb.AppendLine("<ul>");
                    sb.AppendLine(" <li class='best_Img'><span></span><a href='#' target='_blank'> ");
                    sb.AppendLine(string.Format(" <img src='{0}'  width='200' height='200'  /></a></li>", dt.Rows[i]["ImagePath"]));
                    sb.AppendLine("</ul>");
                    sb.AppendLine(" <p class='product_name'>");
                    sb.AppendLine(string.Format("<a href='Products/{0}'   target='_blank'>{1}</a></p>", dt.Rows[i]["Id"], dt.Rows[i]["Name"]));
                    sb.AppendLine("</div></div>");

                    for (int j = i+1; j <= 4; j++)
                    {
                        sb.AppendLine("<div class='product_item'>");
                        sb.AppendLine("<ul><li class='product_Img'>");
                        sb.AppendLine(string.Format("<a href='Products/{0}'><img src='{1}'  width='70' height='70'/></a>", dt.Rows[j]["Id"], dt.Rows[j]["ImagePath"]));
                        sb.AppendLine("</li></ul>");
                        sb.AppendLine(string.Format("<p class='product_name'><a href='Products/{0}'>{1}</a></p>", dt.Rows[j]["Id"], dt.Rows[j]["Name"]));
                        sb.AppendLine("</div>");
                    }
                }

                sb.AppendLine(@" </div></div></div></div></div>");
                ltlHotProducts.Text = sb.ToString();
            }
        }
    }
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
DisplayHotProducts();
}
}
私有产品()
{
var dt=ProductData.GetAllHotProducsts();
如果(dt!=null&&dt.Rows.Count>0)
{
StringBuilder sb=新的StringBuilder();
某人加上一行(“”);
某人加上一行(“”);
某人加上一行(“”);
sb.AppendLine(“热门产品”);
某人加上一行(“”);
某人加上一行(“”);
sb.AppendLine(“”,dt.Rows[i][“ImagePath”]);
sb.附录(“”);
sb.附录(“

”); sb.AppendLine(string.Format(“

”,dt.Rows[i][“Id”],dt.Rows[i][“Name”]); 某人加上一行(“”);
对于(intj=i+1;j内容页(aspx)->Has->3个用户控件(ascx)

我通常看到页面加载触发两次的两个原因-第一,如果您有一个没有src属性的img标记,IE和Chrome都会再次请求页面,这会导致事件再次触发。第二,如果事件连接多次,它会触发多次;通常我看到当代码隐藏包括事件连线代码(例如,
this.PageLoad+=…PageLoad
)并且页面指令
AutoEventWireup=True
包含在aspx文件中。

我通常看到页面加载触发两次的两个原因-第一,如果您有一个没有src属性的img标记,IE和Chrome都会再次请求页面,这会导致事件再次触发。第二,如果事件已连接到more不止一次,它会触发不止一次;通常我看到当代码背后包含事件wireup代码时会发生这种情况(例如,
this.PageLoad+=…PageLoad
)并且页面指令
AutoEventWireup=True
包含在aspx文件中。

在aspx页面中为AutoEventWireup设置的值是什么?在aspx页面中为AutoEventWireup设置的值是什么?如果问题是没有src属性的img标记,则删除这些img标记(或确保它们获得有效的src属性,例如,通过添加“缺少图像”)如果问题是连接事件两次,请删除其中一个(例如,删除
this.PageLoad+=..
代码行或将
AutoEventWireup
更改为false。我的img标记在某些其他用户控件中为空,但它们位于同一页面上。它们是否会造成此类问题?它们可以(这里有一些关于这个问题的讨论:)-有一种相对简单的方法来检查这是否是问题;只需暂时删除img标记,看看问题是否消失。如果问题是没有src属性的img标记,则删除这些img标记(或确保它们获得有效的src属性,例如,通过添加“缺少图像”图像)。如果问题是连接事件两次,请删除其中一个(例如,删除
this.PageLoad+=..
代码行,或将
AutoEventWireup
更改为false。我的img标记在其他一些用户控件中为空,但它们位于同一页面上。它们是否会产生此类问题?它们可以(这里有一些关于此问题的讨论:)-有一种相对简单的方法来检查问题是否存在;只需暂时移除img标签,看看问题是否消失。