【问题标题】:ASP.NET Master Page not updating Child PageASP.NET 母版页不更新子页
【发布时间】:2012-08-12 07:58:27
【问题描述】:

我创建了一个基于 MasterPage 的网站,在创建了几个页面后,我添加了一个新的 <asp:ContentPlaceHolder>,但似乎现有页面不会更新以包含它,但是新页面会。

有没有办法强制更新,或者有正确的方法来做到这一点?我刚刚保存了母版页,希望一切顺利。

【问题讨论】:

  • 您是否在页面指令中设置了现有内容页面的MasterPage
  • 是一样的MasterPage这是顶部的代码链接<%@ Page Title="" Language="VB" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeFile="addons.aspx.vb" Inherits="basic_plan" %>

标签: asp.net master-pages


【解决方案1】:

您需要手动将新的<asp:ContentPlaceHolder> 添加到旧的aspx 页面。

在您的母版页中:

<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="new_one" runat="server"></asp:ContentPlaceHolder>

在旧的 aspx 页面中,添加:

<asp:Content ID="Content3" ContentPlaceHolderID="new_one" runat="server">
</asp:Content>

【讨论】:

  • 当然不是这样,如果我的网站再大一点,这几乎是不可行的
  • 这确实有效,但我仍然认为必须有更好/动态的方式来自动完成
  • @Joshua,当您从母版页创建内容页时,此时会创建内容页的 HTML 标记。如果您稍后在母版页中添加了新的&lt;asp:Content&gt;,您的旧 aspx 页面将不会获得更新。据我所知,Visual Studio 不会自动更新。
  • 如果我决定在以后添加一个 jQuery 包含会是这种情况吗?因此,如果我将&lt;script&gt; 标签添加到MastePage html 中,它是否需要被强制使用或者它会自己出现?
  • @Joshua,普通的 html 内容不会导致这个问题。仅当您添加新的 asp:content 标签时。也许你应该看看嵌套母版页,看看它是否更适合你的需要。
【解决方案2】:

如果您在母版页中创建新的内容占位符,则您的内容页不需要有对应的 &lt;asp:Content&gt;。如果您想替换母版页中的默认内容,它们只需要一个。

如果您要使用自己的内容更新每个页面,那么添加&lt;asp:Content&gt; 标签可能会带来相对较小的不便。

很遗憾,Visual Studio 无法搜索所有内容页面并使用新的&lt;asp:Content&gt; 控件更新它们。

但是,您可以通过使用现有 &lt;asp:Content&gt; 控件的 id 查找并执行 ctrl+shift+F 并替换为新的 &lt;asp:Content&gt; 以及您搜索的内容,从而相当快地完成此操作为。

例如,如果您的内容页面都已经有一个

<asp:Content ID="Content3" ContentPlaceHolderID="old_one" ... />

然后你可以搜索并替换为

<asp:Content ID="Content4" ContentPlaceHolderID="new_one" runat="server" /><asp:Content ID="Content3" ContentPlaceHolderID="old_one" ... />

不是很漂亮,但可以节省一些时间。

【讨论】:

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