我看过类似的问题(1,2),但它们似乎没有为我提供解决方案: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
字段的原因吗?
答案 0 :(得分:1)
Ehsan Sajjad走在正确的轨道上。 Register.aspx.designer.cs
文件未更新。
我终于弄明白这是因为Textbox
和Label
被放置在asp:CreateUserWizard
区块内 - 这是你不应该做的。即使手动将元素添加到designer.cs
文件后,在引用Textbox
(对象引用未设置为对象的实例)时也会引发错误
我应该在我的初始问题中包含Register.aspx
文件中更大的代码段。
答案 1 :(得分:1)
如果您像我一样使用VS2013更新5,请执行以下步骤重新生成设计器文件:
删除陈述的Register.designer.cs
突出显示'Register.aspx'(必须这样做!)
右键单击解决方案资源管理器中的任何内容都不会让您选择“转换为Web应用程序”。
希望这有助于一些初学者。