我正在调用一个在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>
答案 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();
}
虽然城市没有填充,但工作正常。