0

簡単な質問があります。コード ビハインド (".aspx.cs") でオブジェクトを作成すると、aspx ページで使用できないのはなぜですか。

たとえば、クラス (コード ビハインドではなく、別の .cs ファイルに存在する) があり、そのクラスでプロパティが宣言されている場合、「名前」と言ってみましょう。

namespace BLL.SO
{
    public class SOPriceList
    {
        private string _name;
        public string Name
        {
            get { return _name;}
            set { _name = value; }
        }
    }
}

ここで、オブジェクトを作成するときに、コード ビハインド (".aspx.cs") で "obj" と言って、部分クラス内のスコープを使用します。

namespace Modules.SO
{    
    public partial class PriceListRecordView : PageBase
    {
        SOPriceList obj = new SOPriceList();

        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

このオブジェクト「obj」を使用して、プロパティにアクセスできます。次に、同じオブジェクト「obj」を使用して、この方法で aspx ページのプロパティを取得できないのはなぜですか?

<%= obj.Name%>
4

1 に答える 1

2

オブジェクトを作成するときに、コード ビハインド (".aspx.cs") で "obj" としましょう。このオブジェクト "obj" を使用して、プロパティにアクセスできます。

このobjインスタンスをどのように正確に作成したかは明確ではありません。コード ビハインドのメソッド内のローカル変数である場合、この変数のスコープはメソッド自体であることは明らかであるため、ASPX ページでアクセスすることはできません。

ASPX ページでは、コード ビハインドで定義されている現在の WebForm のメンバーにのみアクセスできます。したがって、これobjはどこかでインスタンス化する必要があります。たとえば、コード ビハインドにプロパティを含めることができます。

protected SomeType MyObj
{
    get 
    {
        return ... some instance
    }
}

次に、ASPX ページでアクセスできます。

<%= MyObj.Name %>

Page_Loadたとえば、イベントでプロパティを初期化できる別の例を見てみましょう。

protected SomeType MyObj { get; private set; }

protected void Page_Load(object sender, EventArgs e)
{
    MyObj = new SomeType();
}
于 2012-05-24T07:29:40.320 に答える