ASP.NET: вдруг имя "form1" не существует в текущем контексте?
Последние три недели я работал над этим приложением, и по какой-то причине решил прекратить работу пять минут назад, несмотря на то, что я, очевидно, ничего не делал.
В Default.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AppName.Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"; charset=utf-8 />
<title></title>
<script>(A bunch of script declarations, etc)
</head>
<body>
<form id="form1" runat="server">
</form>
</body>
</html>
В default.aspx.cs:
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
System.Web.UI.HtmlControls.HtmlGenericControl g = new System.Web.UI.HtmlControls.HtmlGenericControl();
//(Dynamically builds a load of html to insert into the form)
form1.Controls.Add(g);
}
}
Внезапно я получаю сообщение об ошибке компилятора "имя" form1 "не существует в текущем контексте", несмотря на то, что он, очевидно, не внес никаких изменений ни в один из этих файлов. Похоже, что Intellisense не может увидеть его нигде, ни в какой области файла.
У кого-нибудь есть идеи почему?
3 ответа
Проблема в том, что в объявлении головы не было runat="Server", которое я должен был изменить около двух недель назад, и Visual Studio каким-то образом удалось избежать этой проблемы до сегодняшнего дня, несмотря на несколько полных перестроений проекта. Типичный Microsoft.
В меню Build в VS, попробуйте запустить "Clean Solution", а затем Build.
Убедитесь, что form1 существует в файле конструктора (default.aspx.designer.cs), так как я подозреваю, что он отсутствует