在aspx页面后面的代码中找不到控件

时间:2014-05-01 16:28:04

标签: c# asp.net .net master-pages code-behind

我在 InfoEdition.aspx

中有此代码
<%@ Page Title="" Language="C#" MasterPageFile="~/Espace_Candidat/SousCandidat.master" AutoEventWireup="true" CodeFile="InfoEdition.aspx.cs" Inherits="Espace_Candidat_InfoEdition" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ChildContent2" Runat="Server">
<div class="span9">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>  
 </div>
</asp:Content>

当我尝试访问文本框时,在 InfoEdition.aspx.cs 背后的代码中:

public partial class Espace_Candidat_InfoEdition : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
// THE TEXTBOX IS NOT FOUND
      TextBox1.
    }
}

找不到文本框!!!

  • 出现此错误的原因是什么?
  • 我该如何解决?

3 个答案:

答案 0 :(得分:1)

在声明中将CodeFile更改为Codebehind

<强>已更新 检查InfoEdition.aspx页面的“Build Action”属性设置为?它应设置为“内容”。

答案 1 :(得分:1)

我认为您应该使用var txt1 = Content1.FindControl("TextBox1"),然后如果txt1不为空,请使用它,因为您通常使用TextBox1

var txt1 = Content1.FindControl("TextBox1");
txt1.Text = "some value";

答案 2 :(得分:0)

我的回答有点晚了,但是您可以做的一件事就是检查设计器文件是否在ASPX页面所在的文件夹中。

如果缺少设计器文件,则后台代码无法找到您的字段。

为了重新创建设计器字段,您需要使用来重新构建它。 VS2019 项目->转换为Web应用程序菜单选项