我的页面左侧有一个侧边栏,其中有一个TreeView,当您单击其中一个项目时,这些项目会重新加载整个页面。我只想重新加载右侧,这是一个内容视图文本和图片,具体取决于您所在的节点......其他所有内容都在母版页中。使用这个网站的人带宽非常有限,所以不重新加载整个页面更有意义,我认为......
如何在点击链接时仅重新加载内容部分?我正在查看UpdatePanel,但我不确定它是否会出现在母版页或内容页面中......对于ASP.NET来说是非常新的。
答案 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事件绑定)正常工作时可能出现的问题