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

时间:2014-06-03 06:36:05

标签: c# asp.net webforms

我看过类似的问题(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 The name 'txtCompanyInput' does not exist in the current context c:\users\...\Account\Register.aspx.cs 62 34 ProjectTest

我有无法在后端引用txtCompanyName字段的原因吗?

2 个答案:

答案 0 :(得分:1)

Ehsan Sajjad走在正确的轨道上。 Register.aspx.designer.cs文件未更新。

我终于弄明白这是因为TextboxLabel被放置在asp:CreateUserWizard区块内 - 这是你不应该做的。即使手动将元素添加到designer.cs文件后,在引用Textbox对象引用未设置为对象的实例)时也会引发错误

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

答案 1 :(得分:1)

如果您像我一样使用VS2013更新5,请执行以下步骤重新生成设计器文件:

  1. 删除陈述的Register.designer.cs

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

  3. 转到菜单 - &gt;'项目',点击'转换为网络应用程序'
  4. 右键单击解决方案资源管理器中的任何内容都不会让您选择“转换为Web应用程序”。

    希望这有助于一些初学者。

相关问题