【问题标题】:Can you change a master page's ContentPlaceHolder's Content Page Asynchronously in .NET?您可以在 .NET 中异步更改母版页 ContentPlaceHolder 内容页吗?
【发布时间】:2009-01-20 21:24:26
【问题描述】:

从我已经读过的内容来看,这似乎是不可能的,但我想看看那里是否有人有秘诀,或者至少是明确的“不”。

假设母版页实际上只是供内容页使用的控件,而不是内容页的“母版”。如果我想从一个内容页面转到另一个具有相同母版页的内容页面,我会说

Response.Redirect("PageB.aspx");

但这会立即导致回发,使页面闪烁,这是糟糕的 pre-ajax 做事方式。

在这个当前的项目中,我想看看我是否可以弄清楚如何在母版页上单击按钮时异步更改母版页中 ContentPlaceHolder 的当前内容页。

这可能吗,如果可以的话怎么办?

【问题讨论】:

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


    【解决方案1】:

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

    每个 ASP.Net 页面都有自己的 URL,因此您要做的是从一个 URL 转到另一个 URL 而没有任何回发,这不是它应该工作的方式。


    使用用户控件 (.ascx):

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

    <ajax:UpdatePanel ...>
    
        <ContentTemplate>
    
            <asp:PlaceHolder ...>
    
        </ContentTemplate>
    
    </ajax:UpdatePanel>
    

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

    【讨论】:

    • 正如我回答的第一部分提到的,我几乎可以肯定使用 .aspx 页面是不可能的。
    【解决方案2】:

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

    更多信息:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多