我有两个名为TimeSheet.aspx.cs和TimSheet.aspx的文件,下面给出了该文件的代码供您参考。
当我构建应用程序时我得到错误“当前上下文中不存在名称'GridView1'”甚至认为我有一个id为GridView1的控件,我也添加了runat =“server”。
我无法弄清楚造成这个问题的原因。任何一个数字都可以在这里发生。
谢谢&的问候,
=======================================
TimeSheet.aspx.cs
=======================================
#region Using directives
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using TSMS.Web.UI;
#endregion
public partial class TimeSheets: Page
{
protected void Page_Load(object sender, EventArgs e)
{
FormUtil.RedirectAfterUpdate(GridView1, "TimeSheets.aspx?page={0}");
FormUtil.SetPageIndex(GridView1, "page");
FormUtil.SetDefaultButton((Button)GridViewSearchPanel1.FindControl("cmdSearch"));
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
string urlParams = string.Format("TimeSheetId={0}", GridView1.SelectedDataKey.Values[0]);
Response.Redirect("TimeSheetsEdit.aspx?" + urlParams, true);
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) {
}
}
=======================================================
TimeSheet.aspx
=======================================================
<%@ Page Language="C#" Theme="Default" MasterPageFile="~/MasterPages/admin.master" AutoEventWireup="true" CodeFile="TimeSheets.aspx.cs" Inherits="TimeSheets" Title="TimeSheets List" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">Time Sheets List</asp:Content>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<data:GridViewSearchPanel ID="GridViewSearchPanel1" runat="server" GridViewControlID="GridView1" PersistenceMethod="Session" />
<br />
<data:EntityGridView ID="GridView1" runat="server"
AutoGenerateColumns="False"
OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
DataSourceID="TimeSheetsDataSource"
DataKeyNames="TimeSheetId"
AllowMultiColumnSorting="false"
DefaultSortColumnName=""
DefaultSortDirection="Ascending"
ExcelExportFileName="Export_TimeSheets.xls" onrowcommand="GridView1_RowCommand"
>
<Columns>
<asp:CommandField ShowSelectButton="True" ShowEditButton="True" />
<asp:BoundField DataField="TimeSheetId" HeaderText="Time Sheet Id" SortExpression="[TimeSheetID]" ReadOnly="True" />
<asp:BoundField DataField="TimeSheetTitle" HeaderText="Time Sheet Title" SortExpression="[TimeSheetTitle]" />
<asp:BoundField DataField="StartDate" DataFormatString="{0:d}" HtmlEncode="False" HeaderText="Start Date" SortExpression="[StartDate]" />
<asp:BoundField DataField="EndDate" DataFormatString="{0:d}" HtmlEncode="False" HeaderText="End Date" SortExpression="[EndDate]" />
<asp:BoundField DataField="DateOfCreation" DataFormatString="{0:d}" HtmlEncode="False" HeaderText="Date Of Creation" SortExpression="[DateOfCreation]" />
<data:BoundRadioButtonField DataField="Locked" HeaderText="Locked" SortExpression="[Locked]" />
<asp:BoundField DataField="ReviewedBy" HeaderText="Reviewed By" SortExpression="[ReviewedBy]" />
<data:HyperLinkField HeaderText="Employee Id" DataNavigateUrlFormatString="EmployeesEdit.aspx?EmployeeId={0}" DataNavigateUrlFields="EmployeeId" DataContainer="EmployeeIdSource" DataTextField="LastName" />
</Columns>
<EmptyDataTemplate>
<b>No TimeSheets Found!</b>
</EmptyDataTemplate>
</data:EntityGridView>
<asp:GridView ID="GridView2" runat="server">
</asp:GridView>
<br />
<asp:Button runat="server" ID="btnTimeSheets" OnClientClick="javascript:location.href='TimeSheetsEdit.aspx'; return false;" Text="Add New"></asp:Button>
<data:TimeSheetsDataSource ID="TimeSheetsDataSource" runat="server"
SelectMethod="GetPaged"
EnablePaging="True"
EnableSorting="True"
EnableDeepLoad="True"
>
<DeepLoadProperties Method="IncludeChildren" Recursive="False">
<Types>
<data:TimeSheetsProperty Name="Employees"/>
<%--<data:TimeSheetsProperty Name="TimeSheetDetailsCollection" />--%>
</Types>
</DeepLoadProperties>
<Parameters>
<data:CustomParameter Name="WhereClause" Value="" ConvertEmptyStringToNull="false" />
<data:CustomParameter Name="OrderByClause" Value="" ConvertEmptyStringToNull="false" />
<asp:ControlParameter Name="PageIndex" ControlID="GridView1" PropertyName="PageIndex" Type="Int32" />
<asp:ControlParameter Name="PageSize" ControlID="GridView1" PropertyName="PageSize" Type="Int32" />
<data:CustomParameter Name="RecordCount" Value="0" Type="Int32" />
</Parameters>
</data:TimeSheetsDataSource>
</asp:Content>
答案 0 :(得分:6)
问题可能是GridView1没有自动添加到designer.cs文件中。如果是这种情况,请在设计器中手动添加。
答案 1 :(得分:2)
假设一个WebSite项目验证在构建它时你没有得到像:
这样的警告设计器文件的生成失败:[失败原因]
您似乎没有注册自定义控件EntityGridView
。请参阅Register directive,了解如何执行此操作。
答案 2 :(得分:1)
在我将'现有文件(.aspx + .aspx.cs)添加到项目并且设计器文件尚未更新之前,我遇到了这个问题。我已经尝试了很多/所有这里写的东西,但我发现创建一个新文件,复制代码前端代码,然后代码隐藏然后重建基本上就可以了。是的,根据您正在使用的文件的大小, * 会很痛苦,但这通常发生在我想快速测试我遇到的一些演示代码时(一些新的项目等)并把它扔进我当地的VS.
答案 3 :(得分:0)
它是嵌套的,所以有些事情不会自动发生。
由于我看到你明确列出了事件,我会检查设计师。
答案 4 :(得分:0)
我在Visual Studio 2010中遇到了同样的问题.design.cs文件已正确生成。我关闭了Visual Studio,并重新打开它。这解决了这个问题(经过很多挫折)。
答案 5 :(得分:0)
我不知道这是否会有所帮助,但我一直在与类似情况作斗争。
情况:我已经将修改过的一些模板化的asp.net web项目中的一些代码包含到我的项目中 - 特别是登录标记。出于某种原因,其中一个“UserName”文本框控件拒绝在设计器中识别。奇怪的是,下一行标记的“UserNameLabel”控件被识别出来:
<%@ Page Language="C#" AutoEventWireup="True" CodeBehind="Logon.aspx.cs" MasterPageFile="~/Site.master" Inherits="SimpleWebApp.Logon" %>
<asp:Content ID="LogonRegister" ContentPlaceHolderID="MainContent" runat="server">
<div></div>
<table align="center">
<tr>
<td valign="top">
*<asp:TextBox ID="TextBox1" runat="server" CssClass="textEntry"></asp:TextBox>*
<asp:Login ID="LoginUser" runat="server" EnableViewState="true" RenderOuterTable="false">
<LayoutTemplate>
<span class="failureNotification">
<asp:Literal ID="FailureText" runat="server"></asp:Literal>
</span>
<asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="failureNotification"/>
<div class="accountInfo">
<fieldset class="login">
<legend>Log In</legend>
<p>
**<asp:Label ID="lblUserNameLabel" runat="server">Username:</asp:Label>**
***<asp:TextBox ID="UserName" runat="server" CssClass="textEntry"></asp:TextBox>***
</p>
...
我尝试过的: 我重启了VWD 2010, 删除了设计器文件,并通过将页面转换为Web应用程序来重新创建它 更改了文本框的名称, 删除并重新创建文本框。
我决定尝试一下,发现在asp:Login标签之外添加一个典型的文本框是可识别的,而在该标签内添加它会使其在设计器中无法识别。
想象这可能有助于我或其他人将可能发生的事情拼凑在一起。
任何人都知道围绕asp:Login标签会导致这种行为的原因是什么?
答案 6 :(得分:0)
对于密切相关的答案,请访问一个稍微类似的问题How do you force Visual Studio to regenerate the .designer files for aspx/ascx files?。
@sameer:在转换项目之前,我很想知道您是否尝试将CodeFile="TimeSheets.aspx.cs"
替换为CodeBehind="TimeSheets.aspx.cs"
。
答案 7 :(得分:0)
我知道这是一个老线程,但我只是在努力解决与此类似的问题。几天之后,我发现我的项目中有问题页面和代码的备份副本。在编译时,我一直在放置在新页面上的对象上收到错误“当前上下文中不存在”,即使intellisense识别它们。我想VS因为默认命名空间中的重复页面而感到困惑。一旦我摆脱了备份,我就神奇地停止了错误。
答案 8 :(得分:0)
我有同样的问题,没有一个解决方案适合我。我发现没有浪费太多时间,管理部分中的许多ASPX页面被赋予与项目实体文件中的实体相同的类名。此外,每个页面都列出了Entities命名空间导致冲突,因为在using指令中添加实体命名空间后,存在命名空间冲突。我经历了每个ASPX页面添加“页面”,重新编译,一切正常。
我知道这个帖子已经得到了解答,但是我想要包含这个描述,以防有其他人遇到同样的问题而上述解决方案都没有工作,给他们一些可能是问题的东西。
我的项目中有21页需要更改,以下是使用UserEntity和Admin / UserEntity.aspx的示例:
在 UsersEntity.aspx 正面aspx页面中,已更改:
<%@ Page Language="C#"
Theme="Default"
MasterPageFile="~/MasterPages/admin.master"
AutoEventWireup="true"
Inherits="UsersEntity"
Title="UsersEntity"
Codebehind="UsersEntity.aspx.cs"
%>
为:
<%@ Page Language="C#"
Theme="Default"
MasterPageFile="~/MasterPages/admin.master"
AutoEventWireup="true"
Inherits="UsersEntityPage"
Title="UsersEntity"
Codebehind="UsersEntity.aspx.cs"
%>
在后面的UsersEntity.aspx.cs代码中,我改变了:
public partial class UsersEntity : System.Web.UI.Page
为:
public partial class UsersEntityEntityPage : System.Web.UI.Page
并在UsersEntity.aspx.designer.cs(Designer Page)中: 当我将页面后面的代码更改为:
时,该页面自动更改public partial class UsersEntityPage {
我为每个其他违规页面都做了这些,除了“编辑”页面之外,它们都是。
- 我想我可以将using指令删除到实体名称空间,但我真的希望能够访问我的页面中的内容,而且我认为页面类可以使用与我的实体类完全相同的名称。这样做会让我感到困惑。
答案 9 :(得分:0)
复制 _ .aspx文件代码并将其粘贴到_ .aspx.cs页面。
如果不是那么导入命名空间一直是顶部。
答案 10 :(得分:0)
我发现designer.cs文件中的文件引用名称不正确。这是代码文件名,最后添加了1。我删除了1,代码运行没有错误。在此之前,我删除并重建了设计器文件而没有解决方案。
答案 11 :(得分:0)
最简单的方法是: