当用户单击TreeView节点时,如何仅加载ASP.NET页面的一个部分?

时间:2014-02-27 21:37:53

标签: javascript asp.net ajax updatepanel

我的页面左侧有一个侧边栏,其中有一个TreeView,当您单击其中一个项目时,这些项目会重新加载整个页面。我只想重新加载右侧,这是一个内容视图文本和图片,具体取决于您所在的节点......其他所有内容都在母版页中。使用这个网站的人带宽非常有限,所以不重新加载整个页面更有意义,我认为......

如何在点击链接时仅重新加载内容部分?我正在查看UpdatePanel,但我不确定它是否会出现在母版页或内容页面中......对于ASP.NET来说是非常新的。

2 个答案:

答案 0 :(得分:1)

母版页

<asp:TreeView ID="myTreeView" />

母版页代码背后。这会将myTreeView公开为公共属性。

public TreeView MyTreeView
{
    get {return myTreeView;} //note the capitalization
    set;
}

内容页面

<%-- Put this below the Page directive) It makes the Master Page strongly typed. Use the path to your Master page --%>
<%@ MasterType  virtualPath="~/MasterPage.master"%>

<asp:UpdatePanel runat="server" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="MyTreeView" EventName="SelectedNodeChanged" />
    </Triggers>
    <ContentTemplate>
        <%-- Rest of your page content goes here --%>
    </ContentTemplate>
</asp:UpdatePanel>

这使得TreeView可用作公共属性。默认情况下,控件具有私有或受保护的范围(无法记住哪个)。然后它会强化您的母版页,以便您可以从内容页面访问母版页公共属性,函数和字段。然后它将TreeView注册为异步回发触发器,这样就会导致UpdatePanel更新。

请注意,我没有测试过这个。我尽可能避开UpdatePanels,转而使用jQuery AJAX。

答案 1 :(得分:0)

尝试在内容占位符内使用更新面板,并为更新面板提供异步触发器。这将允许您对部分呈现进行更多控制,并避免在嵌套updatepanel并使javascript框架(如jquery事件绑定)正常工作时可能出现的问题