页面加载两次因js代码
我有这个div一个中继器,在这里我设置类,的onmouseover内部和onmouseout属性从后面的代码:页面加载两次因js代码
<div id="Div1" runat="server" class="<%# getClassProduct(Container.ItemIndex) %>" onmouseover="<%# getClassProductOver(Container.ItemIndex) %>" onmouseout="<%# getClassProductOut(Container.ItemIndex) %>">
代码隐藏:
public String getClassProduct(Object index)
{
int indexItem = Int32.Parse(index.ToString());
if (indexItem == 3)
return "produs_box produs_box_wrap overitem lastbox";
else
return "produs_box produs_box_wrap overitem";
}
public String getClassProductOver(Object index)
{
int indexItem = Int32.Parse(index.ToString());
if (indexItem == 3)
return "this.className='produs_box produs_box_wrap overitem_ lastbox'";
else
return "this.className='produs_box produs_box_wrap overitem_'";
}
public String getClassProductOut(Object index)
{
int indexItem = Int32.Parse(index.ToString());
if (indexItem == 3)
return "this.className='produs_box produs_box_wrap overitem lastbox'";
else
return "this.className='produs_box produs_box_wrap overitem'";
}
好,问题是,我的Page_Load被激发两次,在那里,我有一些代码,我想只执行一次:
if (!Page.IsPostBack)
{ ..code to execute once }
此代码最初被触发,并在页面呈现后,再次被调用,并由于该js而再次执行...
任何人都可以推荐解决方法吗?
在此先感谢。
更新:只发生在Firefox中。在铬,它工作正常...
“解决方案”:停用YSlow ....只是“可怕的”。
你可以使用OnItemCreated
事件来做到这一点吗?
假设,在div是每个项目的一部分,你可以捕获到事件&做FindControl
上Item
获得句柄div
。检查ItemIndex
&根据需要在代码隐藏中分配类。
这有帮助吗?
嗨,在OnItemCreated事件完成,但问题仍然存在。 – 2010-04-03 18:27:33
你有任何可能导致刷新的Firefox插件吗?当页面加载第二次时,“Page.IsPostBack”的值是多少? – shahkalpesh 2010-04-03 18:39:35
嗨。 Page.IsPostBack也是第二次错误。我停用萤火虫,似乎问题仍然存在... – 2010-04-03 18:54:09
我用Server.Transfer
替换了Response.Redirect
,因为它被建议为新的做事方式。此后,页面加载两次,Chrome中的“返回”按钮返回到上一页并立即返回到当前页面。 我用Response.Redirect
取代了Server.Transfer
,一切恢复正常。我希望这可以帮助别人。
您应该发布整个页面,以便我们可以看到上下文,这可能是重要信息存在的位置。 – 2010-04-03 17:52:58
那么,洞页(aspx)有350行鳕鱼。如果我只从上面评论这个div,所有的工作都很棒。 – 2010-04-03 17:54:48
我建议在调试器中观察它,并检查堆栈跟踪以查看谁正在调用代码两次。 – Ray 2010-04-03 18:00:16