两个星期前我发布了一个类似的问题,但有问题让它调试成功。感谢@Stephen Muecke帮助我排除故障。我正在重新发布,因为我没有对下面概述的问题的后半部分产生任何影响。插入一个字符串值到视图模型列表
基于membertype处理显示公司列表的网站功能,但我遇到了如何在C#中构建列表的问题。当我测试代码时,出现未处理的异常错误,调试表明列表为空。
这里是视图模型:
public class MemberListViewModel
{
public List<string> MemberList { get; set; }
public string MemberType { get; set; }
}
这里是控制器代码:
public class MemberListController : Controller
{
public ActionResult MemberList()
{
return PartialView(PrepareMemberListViewModel());
}
private MemberListViewModel PrepareMemberListViewModel()
{
MemberListViewModel viewModel = new MemberListViewModel();
string orgType = "Distributor"; //TODO: hardcoded for dev
DataTable table = new DataTable();
using (var connection = new SqlConnection("Provider=SQLOLEDB;Data Source=db.site.net;Persist Security Info=True;Initial Catalog=DB;User ID=SA;Password=PW"))
{
connection.Open();
if (orgType == "Manufacturer")
{
using (var command = new SqlCommand("SELECT Member FROM dbo.view WHERE [Member Type] = 'Manufacturer' and [Member Code] <> 'Associate - HBW'", connection))
table.Load(command.ExecuteReader());
}
else if (orgType == "HBW")
{
using (var command = new SqlCommand("SELECT Member FROM dbo.view WHERE [Member Type] = 'Manufacturer' and [Member Code] = 'Associate - HBW'", connection))
table.Load(command.ExecuteReader());
}
else
{
using (var command = new SqlCommand("SELECT Member FROM dbo.view WHERE [Member Type] = '" + orgType + "'", connection))
table.Load(command.ExecuteReader());
}
connection.Close();
}
for (int i = 0; i < table.Rows.Count; i++)
{
string memberName = table.Rows[i]["Member"].ToString();
viewModel.MemberList.Add(memberName);
}
return viewModel;
}
}
当我调试,一切运行顺利,直到我们到达
viewModel.MemberList.Add(memberName);
在该行,viewModel.Memberlist的本地值固执地保持为null。我已经确认该表具有值 - 在本例中为35行,并带有公司名称。
我知道我错过了一些简单的东西,但是我是一个noob,所以不知道它是什么。提前致谢!
您从未实例化过您的列表。 – Fran
实例化您的MemberList – Atul
在类的构造函数中实例化列表属性是一种很好的做法,因此您永远不会访问空列表。 – Fran