由于js代码,页面加载两次

时间:2010-04-03 17:45:55

标签: asp.net

我在转发器中有这个div,我在后面的代码中设置了类,onmouseover和onmouseout属性:

<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被解雇两次,并且我有一些代码我只想执行ONCE:

 if (!Page.IsPostBack)
    { ..code to execute once }

此代码最初被触发,在呈现页面之后,它再次被调用,并由于js而再次执行...

任何人都可以推荐一种解决方法吗?

提前致谢。

更新:仅在Firefox中发生。在chrome上,它工作得很好......

“解决方案”:停用YSlow ....只是“可怕”。

2 个答案:

答案 0 :(得分:0)

您可以使用OnItemCreated事件来执行此操作吗?

假设div是每个项目的一部分,你可以陷入事件&amp;在FindControl上执行Item以获取div的句柄。检查ItemIndex&amp;在代码隐藏中根据需要分配类。

这有帮助吗?

答案 1 :(得分:0)

我将Response.Redirect替换为Server.Transfer,因为它被建议为新的做事方式。从那时起,页面加载两次,Chrome中的后退按钮返回上一页并立即返回当前页面。 我将Server.Transfer替换为Response.Redirect,一切都恢复正常。我希望这有助于某人。