兩個星期前我發佈了一個類似的問題,但有問題讓它調試成功。感謝@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