【问题标题】:Response.Redirect not working as expected - page refreshes itself, no redirect occursResponse.Redirect 未按预期工作 - 页面自行刷新,不发生重定向
【发布时间】:2012-10-09 16:12:06
【问题描述】:

所以,我试图在 gridview 中有一个字段,它是一个打开详细信息页面的链接,基于单击的行。详细信息页面在我手动访问时有效,但我似乎无法通过调用执行 Response.Redirect(URL) 的函数来访问它 - 相反,当单击链接按钮时,我得到了奇怪的行为,页面回发并保持在自身上。

我做错了什么?我应该改用 Server.Transfer() 吗?我宁愿使用重定向,因为在我正在查看的用例中,更新 url 在我看来是一种界面优势。

这是一个 sharepoint webpart 的一部分,另一个页面在同一个 sharepoint 服务器上,并且是不同的 webpart 集合。

<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");
    }

出于绝望/诊断,我尝试重定向到谷歌而不是我精心制作的 URL...仍然没有。页面只会自行刷新。我做错了吗?

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

【问题讨论】:

  • 你为什么要在clientclick上这样做?

标签: c# asp.net sharepoint


【解决方案1】:

您是否能够确认您的事件实际上正在触发?尝试使用 LinkBut​​ton 的 OnClick 事件而不是 OnClientClick

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

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

【讨论】:

  • 我更新了我的回复,建议在您的链接按钮上使用 OnClick 而不是 OnClientClick
  • 当我使用 OnClick 时,我得到 - 无法将“System.Web.UI.WebControls.LinkBut​​ton”类型的对象转换为“System.Web.UI.WebControls.Button”。进一步看一下链接按钮......我的印象是它们的行为更像是一个按钮而不是这个......
  • 更新您的事件中正在投射控件的行:LinkButton btnWorkunit = (LinkButton)clickedRow.FindControl("Workunit");
  • 是的,哎呀。我这样做了,但感觉异常愚蠢。现在我只是将它们评论出来,直到我至少可以让页面重定向到谷歌。编辑:还有光荣的胜利。谢谢
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 2015-04-03
    相关资源
    最近更新 更多