无法在C#代码中访问我的UI控件。怎么了?

时间:2010-08-31 23:46:12

标签: c# asp.net code-behind

我无法在ASP.Net网站上访问我的UI控件。

当我创建一个全新的表单并在其上拖动一个控件时,我可以使用C#轻松地更改控件的属性,就像人们期望的那样。

但是当我尝试在另一个页面上执行相同操作时,无论是否在页面上拖动新控件,我都无法访问任何控件。

似乎背后的代码和可视化页面没有连接。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

脱离我的头顶:

代码隐藏文件是否在ASPX文件的顶行注册?

<%@ Page Title="Title" Language="C#" MasterPageFile="~/Default.Master" AutoEventWireup="true"
    CodeBehind="Page.aspx.cs" Inherits="MyNameSpace.Page" %>

设计器文件是否已被删除或已损坏?如果是这样,请尝试删除deigner文件。 VS应该为你重新生成它。

检查设计人员/代码隐藏文件后的构建操作,并确保它们都设置为“编译”(您可以通过右键单击VS中的文件并选择属性来更改此设置,构建操作应该在文件属性编辑器)

确保您的项目文件设置正确。有时通过项目文件升级(比如当你更改VS版本时)或者只是通过源控制系统共享项目文件可能会导致事情变得糟糕。确认你的文件中你的csproj文件中有这样的条目(用文本编辑器确认,记事本没问题):

<Compile Include="Page.aspx.cs">
  <DependentUpon>Page.aspx</DependentUpon>
  <SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Page.aspx.designer.cs">
  <DependentUpon>Page.aspx</DependentUpon>
</Compile>

我希望其中一个解决你的问题!

答案 1 :(得分:0)

如果您没有designer.cs文件,只需右键单击aspx和“转换为Web应用程序”,然后您就可以获得一个。

答案 2 :(得分:0)

我知道这是一个老问题,但是当我在创建没有设计器文件的aspx页面时遇到同样的问题时,我觉得有必要分享我对该问题的解决方案。

为了使用页面上存在的ASP控件,您需要将控件声明为类中的字段,即与页面中的“Inherits”属性关联的类。例如,如果我的页面上有一个ID为“test”的标签控件,那么我会在我的班级中声明以下内容:

protected System.Web.UI.WebControls.Label test;