未设置自定义控件属性

时间:2013-01-24 10:27:12

标签: asp.net properties user-controls nullreferenceexception

在自定义控件中我放置了属性

[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()

3 个答案:

答案 0 :(得分:0)

在返回之前应检查值是否存在

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

      return "default value here";
   }
   set { ViewState["InitValue"] = value; }
}

答案 1 :(得分:0)

我一直处理的方式是:

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

      return ViewState["InitValue"].ToString(); 
   }
   set { ViewState["InitValue"] = value; }
}

答案 2 :(得分:0)

您的get正在对可空属性进行ToString()。处理它,你会很好。在下面的代码中,我假设“”为默认值。

get { (return ViewState["InitValue"] ?? string.Empty).ToString(); }