【问题标题】:How can I access a Masterpage property from a base class or other functions file如何从基类或其他函数文件访问 Masterpage 属性
【发布时间】:2011-01-15 12:57:42
【问题描述】:

我正在通过执行以下操作从常规 ASP.NET C# 页面访问 Masterpage 属性:

((SecondMasterPage)(Page.Master)).speciallink = true;  
((SecondMasterPage)(Page.Master)).specialspan = false;

这在页面的代码隐藏中可以正常工作,但是当我尝试将其移动到我的基类文件中的函数时,如下所示:

public class MyBaseClass : System.Web.UI.Page
{
public void portalFuncs()
{
    ((SecondMasterPage)(Page.Master)).speciallink = true;  
    ((SecondMasterPage)(Page.Master)).specialspan = false;
}
}

...我收到以下错误消息:

编译器错误消息:CS0246:找不到类型或命名空间名称“SecondMasterPage”(您是否缺少 using 指令或程序集引用?)

我的基类文件位于我的 App_Code 目录中,并且其中的其他函数可以正常工作。为什么这个功能不起作用?此外,如果像这个特定的函数在我的基类文件中不起作用,我可以把它放在哪里以便可以从任何页面调用它?

【问题讨论】:

    标签: c# asp.net master-pages base-class


    【解决方案1】:

    除非我遗漏了什么,否则您应该能够进入您的 SecondMasterPage 文件的代码隐藏,并检查它的命名空间。可能命名空间不正确或与您想要的不同。

    在您的基类中,使用using my.masterpage.namespace; 语句使其工作。

    【讨论】:

    • 这似乎是一种奇怪的方式(或者至少是我从未使用过的方式),但我尝试使用 SecondMasterPage.masterpage.namespace 添加;这给了我以下错误:Compiler Error Message: CS1041 Identifier expected, 'namespace' is a keyword。
    • 不不...这是一个例子。使用母版页类中的实际命名空间,而不是字面意义上的“SecondMasterPage.masterpage.namespace”。
    • 我建立这个网站的方式,我没有在后面的母版页代码中声明命名空间。我只有一个看起来像这样的类: public partial class SecondMasterPage : MyBaseClass{.....}
    • 啊,对了——我忘了​​网站默认没有命名空间声明。现在一切都回来了……你实际上不能像这样访问 App_Code 之外的类,即使它们共享一个命名空间。请参阅此博客文章以了解解决方法:blogs.msdn.com/asgoyal/archive/2009/06/16/…
    • 哦,是的,我一直在使用“网站”模型,而不是“Web 应用程序项目”。不过,我不明白那篇博客文章是如何解决的。我的类文件在 App_Code 中,而不是在它之外。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 2017-10-28
    相关资源
    最近更新 更多