我正在使用 FindControl 函数在页面上查找控件。在 MSDN 上看起来超级简单直接,但我无法找到控件。我正在使用的页面有一个 MasterPageFile,它在我在 aspx 文件中给 contorl 的 id 前面添加了更多内容。一个不起作用的简单示例:
页面
<%@ Page Title="Inventory Control Test" Language="VB" AutoEventWireup="false" MasterPageFile="~/Site.master" CodeFile="Default2.aspx.vb" Inherits="Sales_ajaxTest_Default2" %>
<asp:Content ID="conHead" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="conBody" ContentPlaceHolderID="MainBody" Runat="Server">
<asp:Button ID="saveAllBtn" runat="server" Text="Save All" />
</asp:Content>
后面的代码
Partial Class Sales_ajaxTest_Default2
Inherits System.Web.UI.Page
Protected Sub saveAllBtn_Click(sender As Object, e As System.EventArgs) Handles saveAllBtn.Click
Dim myControl1 As Control = FindControl("ctl00_MainBody_saveAllBtn")
If (Not myControl1 Is Nothing) Then
MsgBox("Control ID is : " & myControl1.ID)
Else
'Response.Write("Control not found.....")
MsgBox("Control not found.....")
End If
End Sub
结束类
我知道 msgbox 不是一个网络东西,我只是在这个例子中使用它。如果我使用“saveAllBtn”,这是给控件的 id,在 FindControl 中我会得到“找不到控件”。如果我尝试这个,在没有母版页的独立页面上它可以正常工作。
如果我使用 chrome 检查元素,我发现按钮的 ID 已更改为“ctl00_MainBody_saveAllBtn”,但如果我在 FindControl 中使用它,我仍然会得到“找不到控件”