4

TimeSheet.aspx.csとTimSheet.aspxという名前の2つのファイルがあります。参照用に、ファイルのコードを以下に示します。

アプリケーションをビルドすると、IDがGridView1のコントロールがあり、runat = "server"も追加したにもかかわらず、「名前'GridView1'は現在のコンテキストに存在しません」というエラーが発生します。

この問題の原因を特定できません。ここで何が起こっているのかを誰かが理解できますか。

ありがとうございます。それでは、お元気で、

=======================================
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

WebSiteプロジェクトを構築するときに、次のような警告が表示されないことを確認します。

デザイナーファイルの生成に失敗しました:[失敗の理由]

カスタムコントロールを登録していないようですEntityGridView。それを行う方法については、Registerディレクティブを参照してください。

于 2010-01-15T18:09:37.497 に答える
1

以前、既存のファイル(.aspx + .aspx.cs)をプロジェクトに「追加」し、デザイナーファイル自体が更新されていないときに、この問題が発生しました。ここに書かれていることの多く/すべてを試しましたが、新しいファイルを作成し、コードフロントコードをコピーしてから、コードビハインドをコピーしてから再構築することで、基本的にうまくいくことがわかりました。はい、作業しているファイルのサイズによっては*苦痛ですが、これは通常、遭遇したデモコード(新しいプロジェクトなど)をすばやくテストしたい場合に発生します。それを私のローカルVSに投げます。

于 2014-08-25T04:36:02.000 に答える
0

ネストされているため、自動的に発生しないものもあります。

  1. 手動でデザイナーに追加する必要がある場合があります。そうでない場合は、(VBでは)handlesキーワードを明示的に使用するか、(C#では)"+="演算子を明示的に接続します。
  2. すべてのイベントまたはコントロールマークアップに明示的に記載されていることを確認してください

イベントを明示的にリストしているので、デザイナーを確認します。

于 2010-01-15T18:13:50.733 に答える
0

VisualStudio2010でも同じ問題が発生しました。design.csファイルは正しく生成されました。Visual Studioを閉じて、再度開きました。これは私にとってこの問題を解決しました(多くの欲求不満の後)。

于 2010-06-09T22:47:26.177 に答える
0

これが役立つかどうかはわかりませんが、私は同様の状況で戦ってきました。

状況:テンプレート化されたasp.net Webプロジェクトの一部を変更したコード(具体的にはログインマークアップ)をプロジェクトに含めました。何らかの理由で、「UserName」テキストボックスコントロールの1つがデザイナで認識されません。不思議なことに、マークアップの次の行の「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

密接に関連する回答については、少し似た質問にアクセスしてください。VisualStudioにaspx / ascxファイルの.designerファイルを再生成させるにはどうすればよいですか?

@sameer:プロジェクトを変換する前にCodeFile="TimeSheets.aspx.cs"に置き換えようとしたかどうか聞いてみたいと思います。CodeBehind="TimeSheets.aspx.cs"

于 2010-11-24T07:22:12.607 に答える
0

これが古いスレッドであることは知っていますが、これに似た問題に苦労しました。数日後、プロジェクトに問題のあるページとコードのバックアップコピーがあることがわかりました。インテリセンスがオブジェクトを認識したにもかかわらず、コンパイル時に新しいページに配置されたオブジェクトで「現在のコンテキストに存在しません」というエラーが発生し続けました。デフォルトの名前空間のページが重複しているため、VSが混乱していたと思います。バックアップを削除すると、魔法のようにエラーが発生しなくなりました。

于 2011-07-18T19:54:42.787 に答える
0

私は同じ問題を抱えていましたが、どの解決策もうまくいきませんでした。時間を無駄にすることなく、管理セクションの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

_ .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

Designer.csファイルに誤ったファイル参照名が含まれていることがわかりました。これは、末尾に1が追加されたコードファイル名でした。1を削除すると、コードはエラーなしで実行されました。これに先立ち、解決せずにデザイナーファイルを削除して再構築しました。

于 2015-11-11T13:59:47.320 に答える
0

最も簡単な方法は次のとおりです。

  1. デザイナファイル(YourFilename.aspx.designer.cs)を削除します
  2. ソリューションエクスプローラーでASPXファイルを選択します
  3. [プロジェクト]メニューで、[Webアプリケーションに変換]項目を探してクリックします。ダイアログウィンドウで[はい]をクリックします。
  4. 新しく作成されたデザイナーファイルを開き、名前空間がプライマリaspx.csファイルの名前空間と一致することを確認します(非常に重要)
  5. Designerファイルを閉じます。
  6. ソリューションを保存します。それを閉じてから再度開きます。
于 2019-08-29T00:17:01.667 に答える