0

私は小さなWebアプリケーションを持っています。

これが私がやりたいことです: コード ビハインド ファイルを分割する部分クラスを作成します。部分クラスを直接作成できないのはなぜですか?

これが分離コード ファイルの場合:

using System;
using System.Configuration....


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Test();
    }
}

また、このクラスを作成します。

public partial class _Default
{
    public void Test()
    {
    }
}

「現在のコンテキストにテストが存在しません」というエラー メッセージが表示されます。

どうしてこれなの?

System.Web.UI.Page から継承するいくつかの部分クラスを作成し、このクラス (部分クラスの結果) から分離コード ファイルを継承すると、すべてが機能します。これが唯一の方法ですか?

コードビハインドと aspx ページがクラスに動的にコンパイルされることと関係がありますか?

誰かが私の問題に答えていただければ幸いです。現在はうまくいっていますが、コードビハインドと同じ「レベル」で部分クラスを作成し、継承の使用を避けたいと思います。

ありがとう/ジョン

(両方のクラスの前にアンダースコアがありますが、プレビューには 1 つしか表示されないことに注意してください。理由はわかりません..)

4

4 に答える 4

1

1) 部分クラスを app_code ディレクトリに配置します (これは試したことはありません)
2) アプリケーションを Web サイト プロジェクトから Web アプリケーション プロジェクトに変換します

WAP は dll または winforms プロジェクトに似ており、実行前にコンパイルされ (UI は更新可能ですが)、クラスを名前空間に配置します。Web サイト プロジェクトは、標準コンパイラとは異なる動作 (たとえば、動的に名前が付けられたアセンブリ) の aspnet_compiler を使用してコンパイルされます。

于 2009-04-05T17:28:13.720 に答える
0

動作しない場合は、同じ名前空間に配置する必要があります。

よろしくお願いします!

于 2009-04-05T17:11:51.500 に答える
0

オーケー。名前空間の問題ではありませんでしたが、その提案に感謝します。

Web サイトの代わりに Web アプリケーションを作成したところ、すべてうまくいきました。どうもありがとうございました。

デフォルトでは、新しいプロジェクトを開始するときは常に新しいWebサイトの作成を選択しますが、これまで問題が発生したことはありません.

もちろん、上記以外の違いは何ですか?

Web サイト プロジェクトではなく、常に Web アプリケーション プロジェクトを使用することに何か欠点はありますか?

ありがとう/ジョン

于 2009-04-05T17:44:37.737 に答える