ASP.NET WebForm报CS0103 当前上下文不存在名称错误如何解决
问题根因
你使用的是原生HTML客户端控件,没有标记为服务器控件,因此后端C#代码无法直接访问控件实例,才会抛出CS0103错误。
解决方案
方案1:给现有HTML控件添加服务器标识
给所有需要后端访问的input标签添加runat="server"属性,按钮额外添加事件绑定属性:
<!-- 输入框修改示例 --> 输入数值1: <input id="Text1" type="text" runat="server" /><br /> <br /> 输入数值2: <input id="Text2" type="text" runat="server" /><br /> <br /> 计算结果: <input id="Text3" type="text" runat="server" /><br /> <br /> <!-- 按钮修改示例 --> <input id="Button1" type="submit" value="加法" runat="server" onserverclick="Button1_Click" /> <input id="Button2" type="submit" value="乘法" runat="server" onserverclick="Button2_Click" /><br />
修改完成后右键aspx文件选择「查看设计器」,等待设计器加载完成会自动同步控件声明到WebForm1.aspx.designer.cs文件中,即可正常编译。
方案2:替换为ASP.NET标准服务器控件(更推荐)
将原生input标签替换为Web Forms原生服务器控件,属性支持更完善:
<!-- 输入框替换示例 --> 输入数值1: <asp:TextBox ID="Text1" runat="server"></asp:TextBox><br /> <br /> 输入数值2: <asp:TextBox ID="Text2" runat="server"></asp:TextBox><br /> <br /> 计算结果: <asp:TextBox ID="Text3" runat="server"></asp:TextBox><br /> <br /> <!-- 按钮替换示例 --> <asp:Button ID="Button1" runat="server" Text="加法" OnClick="Button1_Click" /> <asp:Button ID="Button2" runat="server" Text="乘法" OnClick="Button2_Click" /><br />
异常排查
如果修改后仍然报错,可手动打开WebForm1.aspx.designer.cs文件,检查是否存在对应控件的声明,缺失的话手动补充即可:
- 若使用方案1的HTML服务器控件,补充声明:
protected global::System.Web.UI.HtmlControls.HtmlInputText Text1; protected global::System.Web.UI.HtmlControls.HtmlInputText Text2; protected global::System.Web.UI.HtmlControls.HtmlInputText Text3; protected global::System.Web.UI.HtmlControls.HtmlInputButton Button1; protected global::System.Web.UI.HtmlControls.HtmlInputButton Button2;
- 若使用方案2的标准服务器控件,补充声明:
protected global::System.Web.UI.WebControls.TextBox Text1; protected global::System.Web.UI.WebControls.TextBox Text2; protected global::System.Web.UI.WebControls.TextBox Text3; protected global::System.Web.UI.WebControls.Button Button1; protected global::System.Web.UI.WebControls.Button Button2;
内容的提问来源于stack exchange,提问作者Shyamal Bhatt
相关产品推荐
相关产品推荐

