C# 正在尝试在PageLoad中的UpdatePanel内设置视图

C# 正在尝试在PageLoad中的UpdatePanel内设置视图,c#,asp.net,updatepanel,multiview,C#,Asp.net,Updatepanel,Multiview,我在UpdatePanel和MultiView的组合中遇到了问题 我的顶层有一个UpdatePanel,里面有一堆ImageButton——它们的点击事件设置了Multiview上的视图,每个视图都有一个带有我的绑定的UpdatePanel 一切都很好——但我正试图通过Querystring设置视图,以便将用户发送到特定视图 当我尝试从PageLoad设置视图时,它会显示“对象不存在”。所以我想我应该在Page_LoadComplete中尝试一下,效果很好,但是我的ImageButton无法像最

我在UpdatePanel和MultiView的组合中遇到了问题

我的顶层有一个UpdatePanel,里面有一堆ImageButton——它们的点击事件设置了Multiview上的视图,每个视图都有一个带有我的绑定的UpdatePanel

一切都很好——但我正试图通过Querystring设置视图,以便将用户发送到特定视图

当我尝试从PageLoad设置视图时,它会显示“对象不存在”。所以我想我应该在Page_LoadComplete中尝试一下,效果很好,但是我的ImageButton无法像最初那样切换视图

我错过了什么!谢谢

  void Page_LoadComplete()
    {
        tabSelect= Request.QueryString["tab"];

            if (tabSelect.Contains("Community"))
            {
                MultiView1.SetActiveView(Community);

                btnCommunity.ImageUrl = "images/tabCommunity_on.png";

            }
     }




<asp:ScriptManager id="ScriptManager1" runat="server"/>
<asp:UpdatePanel id="UpdatePanel1" childrenastriggers="true" updatemode="Always" runat="server">
  <ContentTemplate>
    <asp:ImageButton id="btnCommunity" onclick="" runat="server">

    <asp:MultiView ID="MultiView1" ActiveViewIndex="0" runat="server">
        <asp:View ID="Community" runat="server">
            <asp:UpdatePanel id="UpdatePanel1" childrenastriggers="true" updatemode="Always" runat="server">
             //data controls in here
           </asp:UpdatePanel>
        </asp:View>
        <asp:View id="tabFriends" runat="server">
           <asp:UpdatePanel id="UpdatePanel2" childrenastriggers="true" updatemode="Always" runat="server">
             //data controls in here
           </asp:UpdatePanel>
         </asp:View>
     </asp:MultiView>
  </ContentTemplate>
</asp:UpdatePanel>
void页面_LoadComplete()
{
tabSelect=Request.QueryString[“tab”];
if(tabSelect.Contains(“社区”))
{
MultiView1.SetActiveView(社区);
btnCommunity.ImageUrl=“images/tabCommunity_on.png”;
}
}
//这里有数据控件
//这里有数据控件

更新:在进一步详细查看您的代码后,我相信您已经解决了问题

我对代码进行了以下调整:

  • 如果未传递查询字符串,请将
    tabSelect
    设置为空字符串,从而避免下一行出现空对象引用异常

  • 将ImageUrl路径设置为包含(对于根)

  • 请尝试以下代码:

    void Page_LoadComplete()
    {
        string tabSelect = Request.QueryString["tab"] ?? string.Empty;
    
        if (tabSelect.Contains("Community"))
        {
            MultiView1.SetActiveView(Community);
            btnCommunity.ImageUrl = "~/images/tabCommunity_on.png";
        }
    }
    

    更新:在进一步详细查看了您的代码之后,我相信您已经解决了问题

    我对代码进行了以下调整:

  • 如果未传递查询字符串,请将
    tabSelect
    设置为空字符串,从而避免下一行出现空对象引用异常

  • 将ImageUrl路径设置为包含(对于根)

  • 请尝试以下代码:

    void Page_LoadComplete()
    {
        string tabSelect = Request.QueryString["tab"] ?? string.Empty;
    
        if (tabSelect.Contains("Community"))
        {
            MultiView1.SetActiveView(Community);
            btnCommunity.ImageUrl = "~/images/tabCommunity_on.png";
        }
    }
    

    页面加载时也会发生同样的情况——它表示我正在设置的视图为空。但是对象在那里,我可以在调试器中看到它-它只是空的。在那里发生的事情和页面加载一样-它说我正在设置的视图是空的。但是对象在那里,我可以在调试器中看到它-它只是空的。