-2

コントロールを動的にロードし、テキストをコントロールに渡します。しかし、パブリック プロパティを設定しているときに未処理の例外が発生します。

私のコントロールは次のとおりです。

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace g247_Test.controls
{
    public partial class carousel_guards : System.Web.UI.UserControl
    {

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public String pcode
        {
            get
            {
                return pcode;
            }
            set
            {
                pcode = value;
            }
        }
    }
}

前のページのコントロールを次のようにロードします。

   carousel_guards webUserControl = (carousel_guards)Page.LoadControl("~/controls/carousel-guards.ascx");

            webUserControl.pcode = "rg402eg";
            phGuardsList.Controls.Add(webUserControl);

エラーは set { ハンドルされていない例外だけを言っている

4

3 に答える 3

3

あなたのプロパティはそれ自体を参照しています。次のように変更できます。

 public String pcode { get; set; }

または、プライベート文字列フィールドを定義して、それを使用します。

private string _pcode;

public string Pcode
{
    get { return _pcode; }
    set { _pcode = value; }
}

また、プロパティ名を大文字で始める方が良いです (パスカルケースを使用してください) 。

于 2012-11-13T11:53:51.110 に答える
1

ほとんどの場合、スタック オーバーフロー例外です。あなたは基本的に、永遠に続くリターン自体をリターンに伝えています。

Habib が言ったことを実行してget; set;シンタックス シュガーを使用することもできますが、もう少し制御したい場合、これを処理する一般的な方法は、次のように値を格納するフィールドを作成することです。

private string _pcode;

public string pcode { get { return _pcode; } set { _pcode = value; } }
于 2012-11-13T11:55:54.447 に答える
0

get と set を実行するときは、プロパティ自体を参照しています。A) 呼び出し元がアクセスできない値を保持するための基になる変数を用意するか、B)自動実装されたプロパティを使用する必要があります。

private string _pcode
public String pcode {
  get { return _pcode; }
  set { _pcode = value; }
} 

または、

public String pcode { get; set; }
于 2012-11-13T11:54:34.627 に答える