C#,ASP.NET-NullReferenceException-对象引用未设置为对象的实例
时间:2020-03-06 15:02:18 来源:igfitidea点击:
使用中的变量的定义:
Guid fldProId = (Guid)ffdPro.GetProperty("FieldId"); string fldProValue = (string)ffdPro.GetProperty("FieldValue"); FormFieldDef fmProFldDef = new FormFieldDef(); fmProFldDef.Key = fldProId; fmProFldDef.Retrieve(); string fldProName = (string)fmProFldDef.GetProperty("FieldName"); string fldProType = (string)fmProFldDef.GetProperty("FieldType");
给出问题的行(特别是第4行(hTxtBox.Text = ...)):
if (fldProType.ToLower() == "textbox") { Label hTxtBox = (Label)findControl(fldProName); hTxtBox.Text = fldProValue; }
所有数据都是从数据库中正确收集的,但是标签很容易弄错。有任何想法吗?
解决方案
看起来fmProFldDef的FieldName属性是螺丝钉。我们是否验证了它正在获取hTxtBox的客户端ID?
这行返回null:
Label hTxtBox = (Label)findControl(fldProName);
可能是" FieldName"不存在的结果(因此此行返回null,然后在查找中使用null)
string fldProName = (string)fmProFldDef.GetProperty("FieldName");
或者FieldName中的文本不代表表单字段。
我们确定findControl返回一个值吗?
hTxtBox.Text是否是对可能引发NullReferenceException的集合进行任何计算的属性?
findControl返回一个空值。可能是特定的Label不是当前页面的直接子级,即在UpdatePanel或者其他控件中,因此该控件的实际名称与所应用的名称不同(因此找不到它)。 。例如,如果将其命名为" name",则实际名称可能是ctl0 $ content $ name,因为它嵌套在页面上的另一个控件中。
我们实际上没有提供足够的有关上下文的信息,无法让我给我们一个更好的答案。
FindControl可能无法看到该文本框是否在数据绑定控件(例如ListView,FormView等)中?