0

当我让每个提交都通过 response.redirect 时,我的 VB.net tabcontainer 需要保持在活动选项卡上。

我怎样才能做到这一点?我需要那个 response.redirect 因为它会显示在主选项卡容器中添加的内容。

<asp:TabContainer runat="server" ActiveTabIndex="0" Height="200px" 
Width="175px" ScrollBars="Auto" EnableTheming="True" Font-
Underline="False" ID="TabContainer2" EnableViewState="False" 
Style="float:right; padding-left: 110px; margin-bottom: 340px;" 
OnActiveTabChanged="TabContainer1_ActiveTabChanged">


Protected Sub TabContainer1_ActiveTabChanged(ByVal sender As Object, 
ByVal e As EventArgs)
    ViewState("ActiveTabIdx") = TabContainer1.ActiveTabIndex
End Sub


Protected Sub SubmitCompanies_Click(ByVal sender As Object, ByVal e 
As System.EventArgs) Handles SubmitCompanies.Click
*****there is more code here but for this question, it's not necessary so it has been 
omitted*****
    Response.Redirect(Request.RawUrl)
    ViewState("ActiveTabIdx") = TabContainer1.ActiveTabIndex


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
Handles Me.Load
ProductID.Value = Request.QueryString("id")
Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)
If Not ViewState("ActiveTabIdx") Is Nothing Then
    TabContainer1.ActiveTabIndex = Convert.ToInt32(Session("ActiveTabIdx"))
End If
End Sub
4

4 回答 4

1

ViewState 不适用于Response.Redirect. 对于您当前的实现,我将使用 QueryString 或 Session 来存储对活动选项卡的引用。

Response.Redirect(String.Format("{0}?tab={1}", Request.RawUrl, TabContainer1.ActiveTabIndex)) 
于 2011-10-05T16:25:50.153 回答
0

将活动选项卡索引保存在说 Session 变量中,并在您的Page_Load事件中检查是否Session("ActiveTabIdx")不是Nothing或为空,然后将 设置TabContainer1.ActiveTabIndexSession("ActiveTabIdx"). 像这样的东西:

    Protected Sub SubmitCompanies_Click(ByVal sender As Object, ByVal e 
As System.EventArgs) Handles SubmitCompanies.Click
       'Rest of code
        Session("ActiveTabIdx") = TabContainer1.ActiveTabIndex
        Response.Redirect(Request.RawUrl)
    End Sub

    Protected Sub Page_Load(ByVal Sender As Object, ByVal e as System.EventArgs) Handles Page.Load
         If not ViewState("ActiveTabIdx") is Nothing Then
                TabContainer1.ActiveTabIndex = Convert.ToInt32(Session("ActiveTabIdx"))
         End If
    End Sub

在您设置变量值SubmitCompanies_Click之前,您正在重定向用户!ViewStat

于 2011-10-05T15:49:46.943 回答
0

我认为您的解决方案是使用 jquery 将选定的选项卡保存在 cookie 或用户单击选项卡时的任何位置,还使用 ​​jquery 从 cookie 中获取旧的选定选项卡并使用 jquery 设置选定的选项卡

于 2011-10-05T15:49:52.417 回答
0

如我所见,您正在分配视图状态值

ViewState("ActiveTabIdx") = TabContainer1.ActiveTabIndex

Response.Redirect(Request.RawUrl)

此代码是可访问的。

首先要注意的是,新请求不携带 ViewState(通过调用 Redirect 方法启动新请求)。解决方案是使用查询字符串。在 RawUrl 末尾添加活动选项卡作为参数,然后在页面加载时阅读。

希望这可以帮助,

克里斯

于 2011-10-05T15:56:44.150 回答