4

我有两个名为 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>
4

12 回答 12

6

问题可能是 GridView1 没有自动添加到 Designer.cs 文件中。如果是这种情况,请手动将其添加到设计器中。

于 2010-01-15T18:10:10.283 回答
2

假设一个网站项目验证在构建它时您没有收到如下警告:

设计器文件生成失败:[失败原因]

您似乎没有注册自定义控件EntityGridView。请参阅Register 指令以了解如何执行此操作。

于 2010-01-15T18:09:37.497 回答
1

当我将现有文件(.aspx + .aspx.cs)“添加”到项目中并且设计器文件尚未自行更新时,我曾经遇到过这个问题。我已经尝试了很多/所有这里写的东西,但我发现创建一个新文件,复制代码前端代码,然后代码隐藏,然后重建基本上可以解决问题。是的,根据您正在使用的文件的大小,这很痛苦,但这通常发生在我想快速测试我遇到的一些演示代码(一些新项目等)和把它扔到我本地的 VS 中。

于 2014-08-25T04:36:02.000 回答
0

它是嵌套的,所以有些事情不会自动发生。

  1. 您可能必须手动将其添加到设计器,否则(在 VB 中)显式使用句柄关键字或(在 C# 中)显式连接“+=”运算符。
  2. 确保所有事件或在控件标记中明确说明

由于我看到您明确列出了该事件,因此我会检查设计器。

于 2010-01-15T18:13:50.733 回答
0

复制_ .aspx 文件代码并将其粘贴到 _ .aspx.cs 页面上。

如果不是,则一直导入命名空间。

  1. <%@ Page Language="C#" AutoEventWireup="true" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %>
于 2013-10-14T19:40:36.730 回答
0

我知道这是一个旧线程,但我只是在与此类似的问题上苦苦挣扎。几天后,我发现我的项目中有问题页面和代码的备份副本。在编译时放置在新页面上的对象上,我不断收到错误“在当前上下文中不存在”,即使智能感知识别了它们。我猜 VS 会因为默认命名空间中的重复页面而感到困惑。一旦我摆脱了备份,我就神奇地停止了错误。

于 2011-07-18T19:54:42.787 回答
0

有关密切相关的答案,请访问一个稍微相似的问题,如何强制 Visual Studio 为 aspx/ascx 文件重新生成 .designer 文件?.

@sameer:我很想知道您是否在转换项目之前尝试CodeFile="TimeSheets.aspx.cs"替换为。CodeBehind="TimeSheets.aspx.cs"

于 2010-11-24T07:22:12.607 回答
0

我在 Visual Studio 2010 中遇到了同样的问题。design.cs 文件已正确生成。我关闭了 Visual Studio,然后重新打开它。这为我解决了这个问题(经过很多挫折)。

于 2010-06-09T22:47:26.177 回答
0

我有同样的问题,没有一个解决方案对我有用。我没有浪费太多时间就发现,Admin 部分中的许多 ASPX 页面都被赋予了与项目实体文件中的实体相同的类名。此外,每个页面都列出了导致冲突的实体命名空间,因为在 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(设计器页面)中:当我将页面背后的代码更改为:

public partial class UsersEntityPage {

我对其他每个有问题的页面都这样做了,除了“编辑”页面之外,所有这些页面都是如此。

-- 我想我可以将 using 指令删除到实体名称空间,但我真的希望能够在我的页面中访问它,而且我认为页面类具有完全相同的名称是不利的作为我的实体类。那样做会让我感到困惑。

于 2011-08-09T21:21:08.860 回答
0

我不知道这是否会有所帮助,但我一直在与类似的情况作斗争。

情况:我已将修改后的一些模板化 asp.net Web 项目中的一些代码包含到我的项目中 - 特别是登录标记。由于某种原因,“用户名”文本框控件之一拒绝在设计器中被识别。奇怪的是,下一行标记上的“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 标记的这种行为?

于 2010-08-22T18:34:41.720 回答
0

最简单的方法是:

  1. 删除设计器文件 (YourFilename.aspx.designer.cs)
  2. 在解决方案资源管理器中选择 ASPX 文件
  3. 在 Projects 菜单下查找“Convert to Web Application”项并单击它。在对话框窗口中单击是。
  4. 打开新创建的设计器文件并确保命名空间与主 aspx.cs 文件上的命名空间匹配(非常重要)
  5. 关闭设计器文件。
  6. 保存解决方案。关闭它然后重新打开。
于 2019-08-29T00:17:01.667 回答
0

我发现 Designer.cs 文件中的文件引用名称不正确。它是在末尾添加 1 的代码文件名。我删除了 1 并且代码运行没有错误。在此之前,我删除并重建了设计器文件,但没有解决。

于 2015-11-11T13:59:47.320 回答