【问题标题】:ContentPlaceHolder in UpdatePanel更新面板中的 ContentPlaceHolder
【发布时间】:2012-01-10 12:10:17
【问题描述】:

我有一个非常简单的带有母版页的启用 ajax 的 asp .net 网站。我在母版页中有一个菜单,其他页面出现在 MainContent 占位符中。我有以下代码。但是当我单击菜单项时,我有时会看到页面回发。

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always"> 
   <ContentTemplate>
       <asp:ContentPlaceHolder ID="MainContent" runat="server" />
   </ContentTemplate>

如何防止页面的回发和部分加载?我已经搜索了stackoverflow,但就我所见,所有解决方案都与我所做的相同。我有什么需要做的吗?

谢谢。

编辑: 包含菜单项的完整页面如下:

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div class="page">
    <div class="header">
        <div class="title">
            <h1>
                App</h1>
        </div>
        <div class="loginDisplay">
        </div>
        <div class="clear hideSkiplink">
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <asp:Menu ID="NavigationMenu" runat="server" EnableViewState="false" IncludeStyleBlock="false"
                Orientation="Horizontal" Font-Size="Large" Height="48px" Width="100%" BorderStyle="Dashed">
                <Items>
                    <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home Page" />
                    <asp:MenuItem NavigateUrl="~/DefinePropertyType.aspx" Text="Define PropertyType" />
                    <asp:MenuItem NavigateUrl="~/CreateProperty.aspx" Text="Create Property" />
                    <asp:MenuItem NavigateUrl="~/RiskManagemet.aspx" Text="Risk Managemet" />
                    <asp:MenuItem NavigateUrl="~/InsurancePolicy.aspx" Text="InsurancePolicy" />
                    <asp:MenuItem NavigateUrl="~/Damage.aspx" Text="Damage" />
                </Items>
                <StaticMenuItemStyle ItemSpacing="20px" />
            </asp:Menu>
        </div>
    </div>
    <div class="main">
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always"> 
            <ContentTemplate>
                <asp:ContentPlaceHolder ID="MainContent" runat="server" />
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>
    <div class="clear">
    </div>
</div>
<div class="footer">

【问题讨论】:

  • 请张贴您的菜单项代码
  • 将 UpdatePanel 放在 aspx 页面上的 Content 控件中。
  • @Lloyd 我尝试过这种方式,但不幸的是它并没有改变结果,但是谢谢。

标签: c# asp.net ajax updatepanel master-pages


【解决方案1】:

您需要将菜单控件定义为更新面板的异步回发触发器。试试这个

    <asp:updatepanel ID="Updatepanel1" runat="server">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="NavigationMenu" 
                EventName="MenuItemClick" />
        </Triggers>
        <ContentTemplate>
             <asp:ContentPlaceHolder ID="MainContent" runat="server" />
        </ContentTemplate>
    </asp:updatepanel>

【讨论】:

  • 谢谢。这现在有效。但是我想不通。当我用 Firefox 浏览页面时,它总是异步回发,但有时在 chrome 中所有页面回发。你知道为什么会这样吗?
  • @Ozgur Tmp:查看this 文章,看看它是否与您的问题有关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多