Response.Redirect未按预期工作 - 页面刷新自身,不会发生重定向

时间:2012-10-09 16:12:07

标签: c# asp.net sharepoint

所以,我试图在gridview中有一个字段,这是一个根据点击的行打开详细信息页面的链接。当我手动转到它时,详细信息页面可以工作,但我似乎无法通过调用一个执行Response.Redirect(URL)的函数来访问它 - 相反,我得到了一个奇怪的行为,当点击链接按钮时,该页面进行回发并保持不变。

我做错了什么?我应该使用Server.Transfer()吗?我更倾向于使用重定向,因为在我看来的用例中,我更喜欢使用网址更新。

这是sharepoint webpart的一部分,另一个页面位于同一个sharepoint服务器上,是另一个webparts集合。

<asp:Gridview ID="grdWU" runat="server" [+bunch of settings]>
<Columns>
   <asp:TemplateField HeaderText="Workunit #" HeaderStyle-HorizontalAlign="Left"> 
      <ItemTemplate> 
         <asp:Linkbutton ID="Workunit" runat="server" **OnClientClick="OpenDetails"** Text='<%# Bind("Workunit") %>'></asp:Linkbutton>
      </ItemTemplate> 
   </asp:TemplateField>
</Columns>
</asp:Gridview>

在课程背后的代码中:

    protected void OpenDetails(object sender, EventArgs e)
    {
        GridViewRow clickedRow = ((LinkButton) sender).NamingContainer as GridViewRow;
        Button btnWorkunit = (Button)clickedRow.FindControl("Workunit");
          //Response.Redirect(workunitdetailsurl + "?Workunit=" + activeworkunit.ID, true);
        Response.Redirect("http://www.google.com");
    }

出于绝望/诊断,我试图重定向到谷歌而不是我制作的网址......仍然没有。该页面仅刷新自己。我做错了吗?

回答后编辑:我想我并没有正确理解onclick和onclientclick之间的区别。

2 个答案:

答案 0 :(得分:1)

您是否能够确认您的活动实际上是在开火?尝试使用LinkBut​​ton的OnClick事件而不是OnClientClick

另外,尝试使用Response.Redirect的第二个重载,它接受一个指示结束当前页面执行的布尔值:

Response.Redirect("http://www.google.com", true); //Indicates that the execution of the current page should terminate. 

答案 1 :(得分:0)

Response.Redirect抛出ThreadAbortException ...尝试处理异常,你也可以尝试输入按钮或超链接等html控件,而不是项目模板中的链接按钮。