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), так как я подозреваю, что он отсутствует

Другие вопросы по тегам