0

カスタムコントロールにプロパティを配置しました

[Bindable(true), Category("Appearance"), DefaultValue(""), Localizable(true), Description("")]
public string InitValue
{
   get { return ViewState["InitValue"].ToString(); }
   set { ViewState["InitValue"] = value; }
}

ページに含めてページを実行すると、Object reference not set...例外が発生します。上記の行番号を靴しgetます。

プロパティを必須にしたくないのに、プロパティを設定しないと発生します。

使用するのに適したオプションと見なされますか

get { return ViewState["InitValue"]==null ? "" : ViewState["InitValue"].ToString(); }

または、プロパティをオブジェクトにしToString()て、必要に応じてそれを作成する方がよいでしょうか?

4

3 に答える 3

0

値を返す前に存在を確認する必要があります

public string InitValue
{
   get 
   { 
      if(ViewState["InitValue"] != null)
          return ViewState["InitValue"].ToString(); 

      return "default value here";
   }
   set { ViewState["InitValue"] = value; }
}
于 2013-01-24T11:32:05.803 に答える
0

あなたgetToString()null可能なプロパティで実行しています。それを処理すれば、あなたは大丈夫です。次のコードでは、デフォルト値として "" を想定しています。

get { (return ViewState["InitValue"] ?? string.Empty).ToString(); }
于 2015-05-05T03:14:37.093 に答える
0

私がいつもこれを処理してきた方法は次のとおりです。

public string InitValue
{
   get 
   { 
      if(ViewState["InitValue"] == null)
         ViewState["InitValue"] = [DEFAULT VALUE];          

      return ViewState["InitValue"].ToString(); 
   }
   set { ViewState["InitValue"] = value; }
}
于 2013-02-07T00:00:28.520 に答える