2

マスターページをあるソリューション/アプリケーションから別のソリューション/アプリケーションに移動することについてアドバイスはありますか?

マスターページを既存のソリューションから新しいソリューションにコピーしました。

元のソリューションは正常に構築および実行されます。

新しいソリューションでは、ページがビルドエラーを引き起こします

これらは主に「変数」であり、宣言されていません。

2つの非常に単純なステートメントを除いて、ページのすべてのサーバーコードをコメントアウトしました。

ステートメント1は、元のページのマークアップにあるコントロールを参照します

pgLoginView.EnableViewState = True

ステートメント2は、テスト目的で新しく追加されたコントロールを参照しています

lblFrogs.Text = "sdfgsd"

これは、コンパイラがマークアップから生成する必要のあるクラスメンバーを認識していないかのようです。マークアップファイルの「継承」属性が正しく設定されていることを確認しました。コードエディタでインテリセンスを呼び出すと、両方のオブジェクト(lblFrogsとpgLoginView)が一覧表示され、「。」を押した後、それらのプロパティとメソッドが正しく一覧表示されます。

この問題に関連するヘルプやアイデアは大歓迎です。私は私の機知に富んでいます-それは短い旅でした。

4

4 に答える 4

1

マスターページ用に生成されたデザイナーコードを確認する必要があります-実行時に.aspx/.masterページを使用してページ上のすべてのコントロールのインスタンスを作成しますが、コンパイル時に、マークアップに存在するコントロールに関するすべての情報を確認します.designer.masterファイルの部分クラスに含まれています。

public partial class Site1
{
    /// <summary>
    /// ContentPlaceHolder1 control.
    /// </summary>
    /// <remarks> Auto-generated field.</remarks>
    protected global::System.Web.UI.WebControls.ContentPlaceHolder ContentPlaceHolder1;

    // Etc...
}

そのページに適切に生成されたコードが含まれていない場合は、それを試してみる以外に何を提案すればよいかわかりません。または、本当に行き詰まった場合は、自分でコントロールを宣言してください。以前にこの問題が発生しましたが、しません。デザイナーコードがどのように生成されるかについては、そのことをよく知っています。

それが問題ではない場合、Visual Studioがコントロールの名前を変更することを決定していないことを確認しますか?

于 2009-09-16T16:00:30.617 に答える
0

christian-hayterは正しい方向に進んでいるようです。プロジェクトをWebサイトプロジェクトに変換したところ、問題は解決しました。

根本的な原因は謎のままかもしれないように思われます。

于 2009-09-17T07:39:20.317 に答える
0

このページの編集で何かが間違いなく凶暴になっています。

Profileプロパティを参照できません。Dino Espositoのこの記事による と、プロファイルオブジェクトは、次のようにコンパイルプロセスの一部としてページに追加されます。

保護されたProfileCommonプロファイル{get{return((ProfileCommon)(Context.Profile)); }}

作業中のプロジェクトでProfileCommonのファイルを検索すると、asp.net一時ファイルから多くの結果が得られます。壊れたプロジェクトでは、ProfileCommonはどのファイルにも発生しません。

于 2009-09-17T08:12:33.070 に答える
0

私はついに、Profileオブジェクトを使用して問題の原因を見つけました。

まず、プロファイル機能はWebサイトタイプのプロジェクトでのみ使用できます。ただし、ページ要素の参照に関する最初の問題を解決するために、プロジェクトはすでにWebサイトタイプに変換されているのに、なぜプロファイルオブジェクトが使用できなくなったのでしょうか。

答えは、変換によってページのマークアップが変更されないということです。コードビハインドの場所は「CodeFile」で指定する必要があり、Inherits属性では先頭の名前空間情報を削除する必要があります。例:

于 2009-09-17T11:28:51.107 に答える