c# - not - El nombre no existe en el contexto actual
viewbag no existe en el contexto actual (9)
"El proyecto funciona en la computadora portátil, pero ahora se ha copiado el código fuente actualizado en el escritorio ..."
Hice algo similar, creando dos versiones de un proyecto y copiando archivos entre ellos. Me dio el mismo error.
Mi solución fue ingresar al archivo del proyecto, donde descubrí que se veía así:
<Compile Include="App_Code/Common/Pair.cs" />
<Compile Include="App_Code/Common/QueryCommand.cs" />
Ahora se veía así:
<Content Include="App_Code/Common/Pair.cs">
<SubType>Code</SubType>
</Content>
<Content Include="App_Code/Common/QueryCommand.cs">
<SubType>Code</SubType>
</Content>
Cuando los cambié de nuevo, Visual Studio estaba feliz de nuevo.
Entonces, estoy trabajando en este proyecto entre mi computadora portátil y mi escritorio.
El proyecto funciona en la computadora portátil, pero ahora que copié el código fuente actualizado en el escritorio, tengo más de 500 errores en el proyecto, todos ellos son ...
El nombre no existe en el contexto actual
Aquí hay un ejemplo ...
Jobs.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Members/Members.master" AutoEventWireup="true" CodeFile="Jobs.aspx.cs" Inherits="Members_Jobs" %>
<%@ Register Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit" TagPrefix="aj" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:UpdatePanel runat="server" ID="upJobs">
<ContentTemplate>
<!-- page content goes here -->
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
Jobs.aspx.cs
public partial class Members_Jobs : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
loadJobs();
gvItems.Visible = false;
loadComplexes();
loadBusinesses();
loadSubcontractors();
loadInsurers();
pnlCallback.Visible = false;
pnlInsurer.Visible = false;
}
}
// more goes down here
}
Aquí hay una muestra del archivo designer.cs ...
namespace stman.Members {
public partial class Jobs {
/// <summary>
/// upJobs control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.UpdatePanel upJobs;
}
}
Sé que este error significa que el control al que se hace referencia generalmente no existe o no forma parte de la clase que hace referencia a él, pero hasta donde puedo ver, ese no es el caso aquí.
¿Alguien puede dar alguna idea?
Desde el sitio web de MSDN:
Este error ocurre frecuentemente si declara una variable en un bucle o en un intento o si bloquea y luego intenta acceder a ella desde un bloque de código adjunto o un bloque de código separado.
Así que declara la variable fuera del bloque.
En caso de que alguien sea un principiante que haya intentado todo lo anterior y aún no haya logrado que el proyecto funcione. Verifica tu espacio de nombres. En una instancia en la que copie código de un proyecto a otro y se olvide de cambiar el espacio de nombre del proyecto, también le dará este error.
Espero que ayude a alguien.
Me encontré con un problema similar con una metaetiqueta. En designer.cs
, el control se definió como:
protected global::System.Web.UI.HtmlControl.HtmlGenericControl metatag;
Tuve que mover la definición al archivo .aspx.cs
y definir como:
protected global::System.Web.UI.HtmlControl.HtmlMeta metatag;
Resolví el mío usando una directiva de importación bajo mi directiva de página. Es posible que también desee agregar el espacio de nombres a su atributo Heredas de su directiva de página.
Dado que parece que su espacio de nombre predeterminado es "stman.Members", intente: <%@ Page Title="" Language="C#" MasterPageFile="~/Members/Members.master" AutoEventWireup="true" CodeFile="Jobs.aspx.cs" Inherits="stman.Members.Members_Jobs" %> <%@ Import Namespace="stman.Members"%>
Además, los datos que quería pasar entre aspx.cs y aspx, introduje una clase estática dentro del espacio de nombres. Esa clase estática estaba disponible para mover datos en el espacio de nombre y ya no tiene un error "no en contexto".
También me enfrenté a un problema similar, el problema era que el formulario estaba dentro de una carpeta y el archivo .aspx.designer.cs
. Tenía el espacio de nombres haciendo referencia específicamente a ese directorio; que hizo que el error apareciera en varios componentes:
El nombre no existe en el contexto actual
En su caso, una posible solución es dejar la línea de espacio de nombres del archivo Members_Jobs.aspx.designer.cs
especificado globalmente, es decir, cambiar esto
namespace stman.Members {
Para esto
namespace stman {
Es lo que me ayudó a resolver el problema.
Espero ser útil
También me enfrenté a un problema similar. La razón fue que hice los cambios en la página .aspx pero no en la página del diseñador y, por lo tanto, obtuve el error mencionado. Cuando se creó la referencia en la página del diseñador, pude construir la solución.
Tuve este problema en mi proyecto principal cuando hice referencia a un archivo dll.
El problema era que el proyecto principal que hacía referencia al dll apuntaba a una versión de framework inferior a la del dll.
Así que aumenté mi versión de framework objetivo (clic con el botón derecho en el proyecto -> Aplicación -> Target framework) y el error desapareció.
Jobs.aspx
Este es el archivo phyiscal -> CodeFile="Jobs.aspx.cs"
Esta es la clase que maneja los eventos de la página -> Inherits="Members_Jobs"
Jobs.aspx.cs
Esta es la clase parcial que administra los eventos de página -> public partial class Members_Jobs : System.Web.UI.Page
La otra parte de la clase parcial debe ser -> public partial class Members_Jobs
Este es generalmente el archivo de diseñador.
no necesita tener clases parciales y podría declarar todos sus controles en 1 clase y no tener un archivo de diseñador.
EDITAR 27/09/2013 11:37
si todavía tienes problemas con esto, haré lo que Bharadwaj sugirió y eliminó el archivo del diseñador. A continuación, puede hacer clic derecho en la página, en el explorador de soluciones, y hay una opción, algo así como "Convertir a aplicación web", que regenerará su archivo de diseñador