【问题标题】:How to work with Master Page that is attached to the page via the page's basepage?如何使用通过页面的基本页面附加到页面的母版页?
【发布时间】:2010-11-02 17:28:20
【问题描述】:

在我的 ASP.Net Web 应用程序中,我有一个基本页面,它实现了跨越 Web 应用程序所有页面的功能,并且我的网页从这个基本页面派生。

由于整个网站只有一个母版页,我不想在每个网页中附加母版页。所以我通过基本页面的 OnPreInit 方法附​​加了母版页,如下所示:

    protected override void OnPreInit(EventArgs e)
    {
        this.MasterPageFile = "~/Site.master";
        base.OnPreInit(e);
    }

但是,当我切换到设计器视图时,我收到“母版页错误”;该页面具有需要母版页引用的控件,但未指定任何控件。更正代码视图中的问题。

当我运行应用程序时,网页正确显示。

应该怎么做才能使设计者正确显示而不必在每个网页中明确设置母版页?

顺便说一句,我使用的是 Visual Studio 2010 和 .Net 4.0

【问题讨论】:

    标签: asp.net visual-studio-2010 master-pages designer onpreinit


    【解决方案1】:

    您很幸运,您可以在 web.config 中设置母版页文件,它会显示在设计器中,而无需在页面上明确设置。我刚刚测试了它。只需查找下面的行并将其放入您的母版页文件中。

    <pages masterPageFile="~/MasterPage.master">
    

    【讨论】:

    • 添加到这个答案 - 如果您在后面的代码中设置 MasterPage 之类的东西,您将不会在设计器中看到它。 aspx 页面和后面的代码是两个独立的文件。除了在配置文件中设置应用程序范围的规则之外,除非在页面或 web.config 中明确设置 MasterPage,否则您将无法在设计视图中获得视觉效果。
    • 如果您已经测试了以编程方式设置 MasterPage 的逻辑是否正常工作,请在您正在处理的文件中设置 MasterPage。附言- 设计视图对于样式处理来说很糟糕。:)
    • 同意一旦您的母版页和内容变得更加复杂,设计视图就不是那么好了。我偶尔会使用它来拖入控件或生成事件处理程序代码,但之后我通常将它移动到源视图中我想要的位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 2014-08-27
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    相关资源
    最近更新 更多