System.NullReferenceException:

时间:2014-08-16 07:35:26

标签: c# asp.net

我正在调用一个在helper.cs文件中创建并在aspx页面上调用它的函数。但是当我在aspx页面上调用它时,它给出了类似System.NullReferenceException的错误:对象引用未设置为对象的实例。请参阅帮助文件中创建的函数,以及在aspx页面中调用它的方式。

辅助功能:

   public List<string> GetStates(string country)
    {
        if (country == "")
        {
            return null;
        }
        else
        {
            return _rblDataContext.Locations.Where(m => m.CountryName.ToLower() == country.ToLower()).Select(m => m.StateName).Distinct().ToList();
        }
    }

在aspx页面上调用的函数: -

  public void LoadDropDowns()
{
    var locationsforState = _helper.GetStates("");
    locationsforState.Insert(0, "--Select--");
    ddllocation1.DataSource = locationsforState;
    ddllocation1.DataBind();

}

另外,请参阅Dropdown:=

的代码html代码
    <td>
                    <asp:DropDownList CssClass="txtfld-popup" ID="ddllocation1" runat="server"></asp:DropDownList>

                    <asp:RequiredFieldValidator CssClass="error_msg" ID="RequiredFieldValidator1" ControlToValidate="ddllocation1" runat="server" ErrorMessage="Please enter location" InitialValue="--Select--" SetFocusOnError="true"></asp:RequiredFieldValidator>
  </td>

2 个答案:

答案 0 :(得分:2)

您可以使用此代码调用GetStates:

var locationsforState = _helper.GetStates("");

但是在这种方法中,你在这种情况下返回null:

if (country == "")
{
    return null;
}

这是引起异常的原因。你应该在这里返回空列表而不是null:

if (country == "")
{
    return new List<string>();
}

答案 1 :(得分:0)

进行了一些更改并添加了代码: -

    public void LoadDropDowns()
{
    string country = "India";
    ddlCountry.SelectedValue = country;
    ddlCountry.Enabled = false;     
    var states = _helper.GetStates(country);
    states.Insert(0, "--Select--");
    ddllocation1.DataSource = states;
    ddllocation1.DataBind();
 }

虽然城市没有填充,但工作正常。