代码之家  ›  专栏  ›  技术社区  ›  scrot

C,ASP.NET-NullReferenceException-对象引用未设置为对象的实例

  •  1
  • scrot  · 技术社区  · 17 年前

    使用变量的定义:

    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;
    }
    

    所有数据都是从数据库中正确收集的,但是标签有问题。有什么想法吗?

    5 回复  |  直到 17 年前
        1
  •  2
  •   rcreswick    17 年前

    您确定findcontrol正在返回值吗?

    htxtbox.text是否是对可能引发NullReferenceException的集执行任何计算的属性?

        2
  •  2
  •   tvanfosson    17 年前

    findcontrol正在返回空值。可能是特定标签不是当前页的直接子级,即在UpdatePanel或其他控件中,因此控件的实际名称与应用的名称不同(因此找不到它)。例如,如果名为“name”,则实际名称可能是ctl0$content$name,因为它嵌套在页面上的另一个控件中。

    你并没有给我足够的背景信息来给你一个更好的答案。

        3
  •  0
  •   Danimal    17 年前

    看来fmproflddef的fieldname属性有问题。你确认它正在获取htxtbox的客户端ID吗?

        4
  •  0
  •   TheSoftwareJedi jac    17 年前

    此行返回空值:

    Label hTxtBox = (Label)findControl(fldProName);
    

    这可能是“fieldname”不存在的结果(因此此行返回空值,然后在查找中使用空值)

    string fldProName = (string)fmProFldDef.GetProperty("FieldName");
    

    或者fieldname中不代表表单域的文本。

        5
  •  0
  •   Herb Caudill    17 年前

    findcontrol可能看不到文本框-它是否在数据绑定控件(例如listview、formview等)中?