当我从另一个项目复制aspx页面和代码隐藏文件时,我经常遇到编译错误的问题,当我手动创建另一个页面和内容时它似乎有效但是如果我只复制文件则不会。我已经检查过以确保命名空间和引用是正确的,但仍然没有任何意义。我得到的错误是:
错误当前上下文中不存在名称“txtUser”
我只想了解原因。
例如我复制了以下内容:
ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="Login" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Login</title>
</head>
<body>
<form id="form1" runat="server">
<table align="center" width="300px" style="margin-top: 200px;">
<tr>
<td>
<legend>Login</legend>
<table style="width: 30%;" align="center">
<tr>
<td>
<asp:TextBox ID="txtUser" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</body>
</html>
ASPX.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
txtUser.Text = "text";
}
}
答案 0 :(得分:5)
这可能是因为页面缺少设计器文件。如果是,您可以通过右键单击解决方案资源管理器中的页面并选择“转换为Web应用程序”来手动创建它。
答案 1 :(得分:1)
您是否正在复制login.aspx.designer.cs。此文件包含一个部分类,用于保存.aspx页面上控件的定义。
e.g。对于txtUser,你在.designer.cs文件中有声明。
答案 2 :(得分:0)
要检查的一件事是您的新项目是否与旧项目具有相同的项目参考。
如果缺少某些东西(或者确实在你的web.config引用中),VS可以完全跳过生成designer.cs文件,导致你提到的错误。
答案 3 :(得分:0)
到目前为止,我希望你发布的问题和你复制的代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="Login" %>
您收到此错误,因为在您的设计器页面中没有文本框控件 所以它抛出这个错误: “错误名称'txtUser'在当前上下文中不存在”
如需更多帮助,可以粘贴确切的代码。