在自定义控件中我放置了属性
[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()
?
答案 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(); }