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