ASPX页面中,“该名称在当前上下文中不存在”。

3
我已经查看了类似的问题(12),但它们似乎没有提供解决方案:S。
我正在尝试向已经预建的ASP.Net Web表单中添加一个额外的字段。
我的做法是,在Register.aspx.cs后台中尝试获取值txtCompanyInput.Text();:
    protected void RegisterUser_CreatedUser(object sender, EventArgs e)
    {
       ... // some code here 

       String CompanyName = txtCompanyInput.Text();

       ... // other code here

       Response.Redirect(continueUrl);
    }

Register.aspx 本身看起来像这样:

    ...
    <li>
        <asp:Label runat="server" AssociatedControlID="ConfirmPassword">
           Confirm password</asp:Label>
        <asp:TextBox runat="server" ID="ConfirmPassword" TextMode="Password" />
        <asp:RequiredFieldValidator runat="server" ControlToValidate="ConfirmPassword"
           CssClass="field-validation-error" Display="Dynamic"
           ErrorMessage="The confirm password field is required." />
        <asp:CompareValidator runat="server" ControlToCompare="Password" 
           ControlToValidate="ConfirmPassword"
           CssClass="field-validation-error" Display="Dynamic"
           ErrorMessage="The password and confirmation password do not match." />
    </li>
    <li>
           <asp:TextBox ID="txtCompanyInput" runat="server"></asp:TextBox>
    </li>
    ...

当我尝试构建项目时,遇到以下错误:

Error 1 当前上下文中不存在'txtCompanyInput'的名称 c:\users\...\Account\Register.aspx.cs 62 34 ProjectTest

为什么我不能在后端引用txtCompanyName字段?


4
Register.designer.cs 中未添加控件。 - Ehsan Sajjad
1
请检查设计文件!它可能是罪魁祸首! - Srinivasan MK
我明白了,就是这样!将 protected global::System.Web.UI.WebControls.TextBox txtCompanyInput; 添加到 Register.aspx.designed.cs 文件中。 - Serge P
我正在努力理解是什么导致了这个问题。有人能够为此提供一些线索吗? 通常情况下,大多数时候您不需要手动编辑设计文件。在aspx文件中添加控件后进行构建就足够了,不是吗? - LakshmiNarayanan
我以前不得不手动添加控件,这很烦人,但通常是因为项目中的其他问题。而且有时重启 Visual Studio 可以解决此问题。 - matt_lethargic
2个回答

4
如果您像我一样使用VS2013更新5,请按照以下步骤重新生成设计文件:
  1. 删除名为Register.designer.cs的文件

  2. 突出显示'Register.aspx'(必须这样做!)

  3. 转到菜单 -> '项目',点击'转换为Web应用程序'

在解决方案资源管理器中右键单击任何内容都不会给您选择“转换为Web应用程序”的选项。

希望这对一些初学者有所帮助。


2

Ehsan Sajjad 是正确的。 Register.aspx.designer.cs 文件没有得到更新。

我终于发现这是由于将 TextboxLabel 放置在 asp:CreateUserWizard 块内导致的 - 这是不应该做的。即使手动将元素添加到 designer.cs 文件中,引用 Textbox 时也会抛出错误(对象引用未设置为对象的实例

我应该在我的初始问题中包含更大的代码段来自于 Register.aspx 文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接