【问题标题】:ASP.net access a master page variable through content pageASP.net 通过内容页访问母版页变量
【发布时间】:2011-04-08 18:09:30
【问题描述】:

我有一个母版页:

<%@ Master Language="C#" AutoEventWireup="true" Codefile="AdminMaster.master.cs" Inherits="AlphaPackSite.MasterPages.AdminMaster" %>

然后我有一个公共变量:

public partial class AdminMaster : System.Web.UI.MasterPage
{
    protected bool blnShowDialogue = false;

在我的内容页面我想设置这个变量:

blnShowDialogue = true;

这样我就可以在我的母版页中获得代码:

    $(function() {
    <%if(blnShowDialogue == true){%>
        $("#dialog").dialog();
    <% } %>
    }

这有意义吗?当我尝试 Master.blnShowDialogue 或 blnShowDialogue = 等的组合时,似乎没有任何效果。

名称“blnShowDialogue”不 存在于当前上下文中

【问题讨论】:

    标签: c# asp.net winforms master-pages


    【解决方案1】:

    使用@MasterType 指令,如下所述:

    http://msdn.microsoft.com/en-us/library/c8y19k6h.aspx

    【讨论】:

    • 你说得对,甚至没有注意到他的声明中缺少的内容。 +1。
    • 感谢您的回答,但我还是有点迷茫!我应该把那个指令放在哪里?
    • 嗨,汤姆,你必须把它放在你的 @page 指令下,在你的 .aspx 页面中。
    • 谢谢,我在我的内容页面上这样做了 但是 ((AdminMaster)Master).blnShowDialogue = true;还是不行,找不到类型或命名空间
    • @Tom - 摆脱对 (AdminMaster) 的强制转换。只需使用“Master.blnShowDialogue”。我假设“AdminMaster”类与您尝试访问它的页面位于同一名称空间中?如果没有,您将需要使用“VirtualPath”属性(而不是 TypeName)。
    【解决方案2】:

    您需要将母版页转换为实际类型。

    ((AdminMaster)Master).blnShowDialogue = "Foo";
    

    否则 Master 将只是指基类 Master - 您正在尝试访问您的实际类中派生的属性来自大师类。

    您遇到的错误是因为 System.Web.UI.MasterPage 类中不存在名为 blnShowDialogue 的属性 - 这是有道理的,因为您是没有告诉它您要引用哪个特定的 MasterPage 实例。

    希望对您有所帮助。

    【讨论】:

    • 谢谢,但它给出了错误,找不到类型或命名空间名称“AdminMaster”(您是否缺少 using 指令或程序集引用?)
    • @Tom - @mamoo 的答案是正确的(没有足够仔细地查看您的母版页指令),让他走吧。
    猜你喜欢
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多