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

我一直处理的方式是:

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 回答
0

get正在ToString()对可空属性执行操作。处理它,你会没事的。在下面的代码中,我假设 "" 作为默认值。

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