日期:2014-05-18  浏览次数:20409 次

请教:自定义控件中LoadPostData方法报NullReferenceException错误,虚拟IIS和IIS上反映不一致。
现在手里有一份公司以前同事开发的系统,用asp1.0做的,需要我维护。昨天遇到一个非常郁闷的问题:
客户说一个页面报错,我在代码中直接调试无错(VS2005),我发布网站给他,仍然有错,于是我用自己机子上的发布网站浏览发现错误,一个自定义控件中的一个方法
public virtual bool LoadPostData(string postDataKey, NameValueCollection postCollection) 
{
  string sValue = this.Value;
  string sPostedValue = postCollection.GetValues(postDataKey)[0];
  if (sPostedValue != null && !sValue.Equals(sPostedValue))
  {
  this.Value = sPostedValue;
  return true;
  } 
  return false;
}
其中this是有值的就是我的控件,但是this.Value就报异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。postDataKey,postCollection也有值string sPostedValue = postCollection.GetValues(postDataKey)[0];也报同样的错误!
如果我在VS2005中直接运行是无错的(用虚拟IIS(使用默认的WEB服务器)),如果我用自己机子上的IIS浏览就会报错,在属性页上设置为自定义的WEB服务器也会报错!
谁知道怎么改??

------解决方案--------------------
帮顶
------解决方案--------------------
try
String postedValue = postCollection[postDataKey];
另外数据是什么?

------解决方案--------------------
够了
try
把value的值存在viewstate里

------解决方案--------------------
private ListItemCollection items; //这个也要保存状态
------解决方案--------------------
up