你能在.NET中异步更改母版页的ContentPlaceHolder的内容页面吗?

时间:2009-01-20 21:24:27

标签: c# .net ajax master-pages postback

从我已经读过的内容看来这似乎是不可能的,但是我想知道是否有人在他们的袖子上或者至少有一个明确的“不”。

据说主页实际上只是内容页面的控件,实际上并不是内容页面的“主”。如果我想从一个内容页面转到另一个具有相同母版页的内容页面,我只想说

Response.Redirect("PageB.aspx");

但这会立即导致回发,闪烁页面,这是一种糟糕的前阿贾克斯做事方式。

在这个当前项目中,我试图看看如果在主页面上单击一个按钮时,我是否能够异步地更改主页面中ContentPlaceHolder的当前内容页面。

这是可能的,如果是这样的话?

2 个答案:

答案 0 :(得分:1)

我不知道你是否可以在页面之间(.aspx),但它绝对可以使用UserControls完成。

ASP.Net页面每个都有自己的URL,所以你要做的就是从一个URL转到另一个URL而不进行任何回发,这不是它应该如何工作。


使用用户控件(.ascx):

创建一个使用MasterPage的页面,并在内容中使用类似的内容

<ajax:UpdatePanel ...>

    <ContentTemplate>

        <asp:PlaceHolder ...>

    </ContentTemplate>

</ajax:UpdatePanel>

搜索UpdatePanel并调整其设置以执行您想要的操作,然后了解如何在占位符中交换用户控件。

答案 1 :(得分:0)

,你不能,因为母版页实际上是在特定的aspx页面上呈现的控件,而不是实际包含aspx页面,因为它看起来似乎是以编程方式和设计视图。

更多信息:

但是,您可以使用各种其他控件来模拟此效果。 asp:MultiView控件就是一个例子,每个“页面”可以在一个视图中制作并放置在更新面板中,从而允许它异步切换。或者,您可以在单独的用户控件中定义每个页面,并将它们放在更新面板中,根据需要异步切换这些控件上的visible属性。

实现类似于更改母版页内容占位符的效果的方法确实有很多种。