"The name does not exist in the current context"在ASPX页面中。
"The name does not exist in the current context"在ASPX页面中。
我查看了类似的问题(1,2),但它们似乎没有给我提供解决方案。
我正在尝试向已经预先构建(即包含在)ASP.Net Web Form中的注册表单添加一个额外的字段。
我所做的是,在Register.aspx.cs
的后端中,我尝试获取值txtCompanyInput.Text()
:
protected void RegisterUser_CreatedUser(object sender, EventArgs e) { ... // 这里有一些代码 String CompanyName = txtCompanyInput.Text(); ... // 这里有其他代码 Response.Redirect(continueUrl); }
Register.aspx
本身看起来是这样的:
...
确认密码
CssClass="field-validation-error" Display="Dynamic" ErrorMessage="确认密码字段是必填的。" /> ControlToValidate="ConfirmPassword" CssClass="field-validation-error" Display="Dynamic" ErrorMessage="密码和确认密码不匹配。" />
...
当我尝试构建项目时,遇到以下错误:
错误 1 当前上下文中不存在 'txtCompanyInput' 的名称 c:\users\...\Account\Register.aspx.cs 62 34 ProjectTest
为什么我无法在后端引用txtCompanyName
字段?
在ASPX页面中出现"The name does not exist in the current context"的问题,其原因是由于Register.aspx.designer.cs文件未被更新。将Textbox和Label放置在asp:CreateUserWizard块内部导致该问题的发生,而实际上这是不应该这样做的。即使手动将元素添加到designer.cs文件中,当引用Textbox时仍会抛出错误(Object reference not set to an instance of an object)。在我最初的问题中,我应该包含来自Register.aspx文件的更大代码段。
解决方法是将Textbox和Label元素移出asp:CreateUserWizard块,并重新生成Register.aspx.designer.cs文件。这样就可以解决"The name does not exist in the current context"的问题了。
以下是修改后的Register.aspx页面的示例代码:
重新生成Register.aspx.designer.cs文件后,可以在代码中正常引用Textbox和Label元素,而不会再出现"The name does not exist in the current context"的错误。