MasterPage .FindControl 在类中

2024-04-08

我尝试在从内容页面访问母版页时找到一个控件,确切地说是一个图像按钮。以下是母版页html代码:

<body>
    <form id="form1" runat="server">
    <div class="navLeft">
        <br />           
        <asp:ImageButton ID="imgbtnMooring" runat="server" 
            Height="60px" ImageUrl="~/Item/RibbonIcon/Dashboard.png" />
        <br />
    </div>
    <div class="navTop">            
    </div>
    <div class="banner">
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
        </asp:ContentPlaceHolder>
    </div>
    <div class="divider">
        <asp:ContentPlaceHolder id="ContentPlaceHolder2" runat="server">
        </asp:ContentPlaceHolder>
    </div>
    <div class="content">
        <asp:ContentPlaceHolder id="ContentPlaceHolder3" runat="server">
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>

当我将以下代码放入内容页 aspx.cs 文件中时,我成功地做到了这一点

    string validMooring = "";

    comm = new SqlCommand("SELECT * FROM dbo.StructureCurrent", conn);
    conn.Open();
    reader = comm.ExecuteReader();
    while (reader.Read())
    {
       validMooring = reader["StructureMooring"].ToString();
    }

    switch (validMooring)
    {
        case "YES":
            (Page.Master.FindControl("imgbtnMooring") as ImageButton).Enabled = true;
            (Page.Master.FindControl("imgbtnMooring") as ImageButton).ImageUrl = "~/Item/RibbonIcon/Dashboard.png";
            break;
        case "NO":
            (Page.Master.FindControl("imgbtnMooring") as ImageButton).Enabled = false;
            (Page.Master.FindControl("imgbtnMooring") as ImageButton).ImageUrl = "~/Item/RibbonIcon - Grey/DashboardGrey.png";
            break;
        default:
            break;
    }

现在我尝试制作一个名为 GeneralClass 的类文件,以便可以在任何内容页面中访问上述代码。 sql 命令只是从服务器中提取“是/否”值,所以我认为对于我的问题可以忽略它。

以下是 GeneralClass 类文件中的代码:

    MasterPage masterPage = new MasterPage();
    masterPage.MasterPageFile = "~/GeneralLayout.master";

    string validMooring = "";

    comm = new SqlCommand("SELECT * FROM dbo.StructureCurrent", conn);
    conn.Open();
    reader = comm.ExecuteReader();
    while (reader.Read())
    {
        validMooring = reader["StructureMooring"].ToString();
    }

    switch (validMooring)
    {
        case "YES":
            (masterPage.FindControl("imgbtnMooring") as ImageButton).Enabled = true;
            (masterPage.FindControl("imgbtnMooring") as ImageButton).ImageUrl = "~/Item/RibbonIcon/Dashboard.png";
            break;
        case "NO":
            (masterPage.FindControl("imgbtnMooring") as ImageButton).Enabled = false;
            (masterPage.FindControl("imgbtnMooring") as ImageButton).ImageUrl = "~/Item/RibbonIcon - Grey/DashboardGrey.png";
            break;
        default:
            break;
    }

但不知何故,该行 (masterPage.FindControl("imgbtnMooring") as ImageButton) 返回空值。

谁能帮我解决这个问题吗?


您可以使用页面扩展方法,因为我怀疑您的代码无法找到控件。

Master.cs:

private void Page_Load(object sender, System.EventArgs e)
{
  this.EnableControls(null);
}

在 GeneralClass 类文件中添加以下命名空间:

using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

public static void EnableControls(this Page page, ControlCollection ctrl)
{
    if (ctrl == null)
        ctrl = page.Controls;

    string validMooring = "";

    comm = new SqlCommand("SELECT * FROM dbo.StructureCurrent", conn);
    conn.Open();
    reader = comm.ExecuteReader();
    while (reader.Read())
    {
      validMooring = reader["StructureMooring"].ToString();
    }

    foreach (Control item in ctrl)
    {
        if (item.Controls.Count > 0)
            EnableControls(page, item.Controls, isEnable);

        if (item.GetType() == typeof(ImageButton))
        {
            switch (validMooring)
            {
              case "YES":
                ((ImageButton)item).Enabled = true;
                ((ImageButton)item).ImageUrl = "~/Item/RibbonIcon/Dashboard.png";
                 break;

              case "NO":
                ((ImageButton)item).Enabled = false;
                ((ImageButton)item).ImageUrl = "~/Item/RibbonIcon - Grey/DashboardGrey.png";
                break;
            default:
                break;
        }

    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MasterPage .FindControl 在类中 的相关文章

  • 如何为WCF服务创建重定向?

    我的网站 A 上托管了一个 WCF 服务 我还有另一个网站 B 它使用 IIS URL 重写将所有请求重定向到我的网站 A 但是 站点 B 不处理任何对 svc 文件的请求 返回 404 not find 知道如何让它发挥作用吗 UPD重定
  • C#.Net 邮件将进入垃圾邮件文件夹

    我正在从 ASP net Web 应用程序发送电子邮件 邮件发送成功 没有失败 但大多数都进入了垃圾邮件文件夹 请帮助我克服垃圾邮件过滤器 我的发送邮件代码 public void SendMail string FromAddress s
  • 如何使用 openSSL 函数验证 PEM 证书的密钥长度

    如何验证以这种方式生成的 PEM 证书的密钥长度 openssl genrsa des3 out server key 1024 openssl req new key server key out server csr cp server
  • 在 C 语言中,为什么数组的地址等于它的值?

    在下面的代码中 指针值和指针地址与预期不同 但数组值和地址则不然 怎么会这样 Output my array 0022FF00 my array 0022FF00 pointer to array 0022FF00 pointer to a
  • ASP.NET MVC 3 中嵌入的 PHP 站点的 IgnoreRoute

    我有一个带有嵌入式 WordPress 博客的 MVC 3 网站 以下所有 url 均通过 MVC 定向 www mysite com www mysite com aboutus www mysite com contactus 我还有一
  • 2个对象,完全相同(除了命名空间)c#

    我正在使用第三方的一组网络服务 但遇到了一个小障碍 在我手动创建将每个属性从源复制到目标的方法之前 我想我应该在这里寻求更好的解决方案 我有 2 个对象 一个是 Customer CustomerParty 类型 另一个是 Appointm
  • 用于在标头更改时重新编译的简单 C 项目的示例 makefile

    有谁有完整的 makefile 可以执行以下操作 如果 HEADER 文件发生更改 则重建项目 cpp 文件在 makefile 中列出 头文件未在 makefile 中列出 头文件允许与 cpp 文件具有不同的名称 部分cpp文件没有头文
  • if constexpr 中的 not-constexpr 变量 – clang 与 GCC

    struct A constexpr operator bool const return true int main auto f auto v if constexpr v A a f a clang 6 接受该代码 GCC 8 拒绝它
  • JavaScript 错误:MVC2 视图中的条件编译已关闭

    我试图在 MVC2 视图页面中单击时调用 JavaScript 函数 a href Select a JavaScript 函数 function SelectBenefit id code alert id alert code 这里 b
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • 保证复制省略是否适用于函数参数?

    如果我理解正确的话 从 C 17 开始 这段代码现在要求不进行任何复制 Foo myfunc void return Foo auto foo myfunc no copy 函数参数也是如此吗 下面的代码中的副本会被优化掉吗 Foo myf
  • wordexp 失败时我们需要调用 wordfree 吗?

    wordexp 失败时我们需要调用 wordfree 吗 在某些情况下 调用 wordfree 似乎会出现段错误 例如 当 wordfree 返回字符串为 foo bar 的错误代码时 这在手册页中并不清楚 我已经看到在某些错误情况下使用了
  • 如何在 Javascript 中连接 C# ActiveX 事件处理程序

    我尝试使用几个代码片段将 ActiveX 对象与 Javascript 事件处理程序挂钩 我无法确定为什么事件处理程序没有被调用 带有项目的 Github 存储库 https github com JesseKPhillips Csharp
  • 我们可以通过指针来改变const定义的对象的值吗?

    include
  • 如何从 Boost.PropertyTree 复制子树

    我有一些boost property tree ptree 我需要树来删除一些具有特定标签名称的元素 例如 xml 表示源ptree如下
  • 使用 gcc 时在头文件中查找定义的好方法是什么?

    在使用 gcc 时 有人有推荐的方法在头文件中查找定义吗 使用 MSVC 时 我只需右键单击并选择 转到定义 这非常好 我使用过 netbeans gcc 它确实有代码帮助 包括到定义的超链接 所以这是一种选择 但是 我想知道是否有任何其他
  • 如果将变量设置为等于新对象,旧对象会发生什么?

    假设我们有一个 X 类not有一个超载的operator 功能 class X int n X n 0 X int n n n int main X a 1 an object gets constructed here more code
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助
  • 如何在 C# 中获取 CMD/控制台编码

    我需要指定正确的代码页来使用 zip 库打包文件 正如我所见 我需要指定控制台编码 在我的例子中为 866 C Users User gt mode Status for device CON Lines 300 Columns 130 K
  • 如何为有时异步的操作创建和实现接口

    假设我有数百个类 它们使用 计算 方法实现公共接口 一些类将执行异步 例如读取文件 而实现相同接口的其他类将执行同步代码 例如将两个数字相加 为了维护和性能 对此进行编码的好方法是什么 到目前为止我读到的帖子总是建议将异步 等待方法冒泡给调

随机推荐

  • 获取满足特定条件的数组项的计数

    我有一个名为 friend comparisons 的数组 其中填充了许多用户对象 然后我使用以下命令对数组进行排序 friend comparisons sort a b b completions where list id gt li
  • 按小时将日期时间对象排序到 Pandas 数据框,然后使用 Matplotlib 可视化为直方图

    我需要按小时对观看者进行直方图排序 我有一些使用 Matplotlib 来做到这一点的经验 但是我不知道按小时对日期进行排序的最实用的方法是什么 首先 我从 JSON 文件中读取数据 然后将两种相关的数据类型存储在 pandas Dataf
  • 如何在 Windows 上的 nvidia GPU 的 Visual Studio 2010 中配置 OpenCL?

    我在华硕笔记本电脑上的 Wwindows 7 操作系统上使用 NVIDIA GeForce GTX 480 GPU 我已经为 CUDA 4 2 配置了 Visual Studio 2010 如何在 Visual Studio 2010 上为
  • “Java Date() 返回 UTC 日期” - 它实际上是什么意思?

    我的问题可能很微不足道 但我只是想寻求澄清 我在 SO 中读到 Java 的 Date 实际上总是采用 UTC 时间 为什么当我创建 Date 对象并使用 toString 打印它时 它显示本地时间 如果这不是正确的打印方式 那么应该使用什
  • MySQL 中的乐观锁

    我在 MySQL 中找不到任何有关乐观锁定的详细信息 我读到 启动事务可以使两个实体的更新保持同步 但是 它不会阻止两个用户同时更新数据 从而导致冲突 显然乐观锁定可以解决这个问题 这在 MySQL 中是如何应用的 有相关的 SQL 语法
  • JTree 节点的可更改工具提示

    我有一个 JTree 其中填充了一些 自定义 节点 我有一个类 它是 DefaultTreeCellRenderer 的子类 使用 MyTreeCellRenderer 我可以为树中的每个节点设置工具提示 它工作正常 JTree 已填充 单
  • System.Data.IDbCommand 和异步执行?

    系统 Data SqlClient SqlCommand 有方法 BeginExecuteNonQuery BeginExecuteReader BeginExecuteXmlReader and EndExecuteNonQuery En
  • 如何配置本地 Jetty ssl 以避免弱 phermeral DH 密钥错误?

    我正在使用 keytool 生成密钥库来配置本地开发码头来运行 ssl keytool exe keystore jetty keystore alias jetty genkey keyalg RSA sigalg SHA256withR
  • 堆积条形图的悬停不起作用

    我正在检查 Flot 中的堆积图表 并在条形图中发现了一些奇怪的东西 我尝试使用这个 http jsfiddle net zNXBd 41 http jsfiddle net zNXBd 41 在此示例代码中 尝试将鼠标悬停在堆叠线上 悬停
  • AnyObject 尝试转换为 Equatable

    我有一个Equatable class class Item Equatable var value AnyObject var title String init title String value AnyObject self tit
  • 何时使用 IOC 容器?

    我试图了解何时应该使用容器而不是手动注入依赖项 如果我有一个使用 1 2 个接口的应用程序 并且每个接口只有 1 2 个具体实现 我会倾向于自己处理 如果我有一个使用 2 3 个接口的小型应用程序 并且每个接口有 2 3 个具体实现 我应该
  • 删除 woocommerce 完整或基于订单元处理电子邮件

    我正在尝试根据某些订单元删除处理 或完整 电子邮件 我正在使用 POS 系统并让客户通过客户发票电子邮件付款 初始订单状态为待付款 我想 a 测试是否使用 pos 下订单 b 删除 正在处理 或 完成 电子邮件 我似乎无法让 if 语句逻辑
  • 由于找不到资源“solrconfig.xml”而无法创建新的 Solr 核心

    我刚刚安装了 Solr 并想创建一个新的核心 但出现此错误 org apache solr common SolrException Error CREATEing SolrCore new core Unable to create co
  • “查找”或任何其他工具可以广度优先搜索文件吗?

    有时我知道某个文件并不那么深 但是非常密集的子目录不允许我轻松找到我想要的文件 Can find http www gnu org software findutils manual html mono find html 或任何其他工具
  • 编译器如何知道 C++ constexpr 计算不会触发未定义的行为?

    C 标准mandates编译器要检查未定义的行为 in C constexpr 计算 In 这次演讲 https www youtube com watch v yG1OZ69H o Chandler Carruth 指出 在检查 UB 时
  • 如何在 ruby​​ 中保留我的浮点数

    所以我正在尝试一些代码将数字转换为字符串 但是 我注意到在某些情况下它不会保留最后两位小数 例如 我输入 1 01 和 1 04 进行加法 然后得到 2 04 如果我只输入 1 05 它会保留该数字并准确返回 我明白发生了什么事情正在四舍五
  • SAML 签名证书 - 哪种 SSL 证书类型?

    我们目前正在使用 SAML 2 0 开发 SSL 解决方案 到目前为止 一直使用自签名证书来签署 XML 请求 但是 当我们转向生产时 我们希望使用来自证书颁发机构的证书 但我不太确定要购买什么类型的证书 因为它们都是以网站为中心的 例如单
  • QT:如何每秒循环一个方法? C++

    我创建了一个 Qt 项目 它在小部件上显示一个圆圈 然后我有一个方法 每次调用该方法时都会在不同位置重新绘制圆 我想要的是在 for 循环中运行该方法 比如说十次 并显示每秒重绘圆圈的 10 个位置 大致如下 void method pai
  • 在 Android 中添加地理围栏时出错(状态代码 1000)

    我收到错误onAddGeofencesResult int statusCode String geofenceRequestIds 回调与statusCode 1000 我启用了 GPS 和 WiFi 我还有 Google Play 服务
  • MasterPage .FindControl 在类中

    我尝试在从内容页面访问母版页时找到一个控件 确切地说是一个图像按钮 以下是母版页html代码