2
public class SaleItem
{
public int Id { get; set; }
public string Name { get; set; }
}
public class SalesDBContext
{
public static List<SaleItem> GetItems()
{
var items = new List<SaleItem>(){
new SaleItem{Id=1,Name="Soap"},
new SaleItem{Id=2,Name="Milk Power"},
new SaleItem{Id=3,Name="Toothpaste"},
new SaleItem{Id=4,Name="Ice Cream"}
};
return items.ToList();
}
}
public class SalesViewModel
{
public string Item { get; set; }
public List<SaleItem> itemlist { get; set; }
}
我上面SalesViewModel
類和SalesDBContext
爲虛擬數據生成後回到空的集合。我想將項目添加到從下拉列表中選擇的列表。對於我創建了以下觀點:視圖模型在asp.net mvc的5
@model MVCDropdown.Models.SalesViewModel
@using MVCDropdown.Models
<form method="post">
<p>
@Html.DropDownListFor(model => model.Item, new SelectList(ViewBag.Items, "Id", "Name"), "--select--")
<input type="submit" value="Add" />
</p>
<p>
@if (Model.itemlist != null)
{
<table>
@foreach (var s in Model.itemlist)
{
<tr>
<td>@s.Name</td>
</tr>
}
</table>
}
</p>
</form>
的控制器
[HttpGet]
public ActionResult Index()
{
SalesViewModel model = new SalesViewModel
{
Item = "",
itemlist = new List<SaleItem>()
};
PopDrodown();
return View(model);
}
[HttpPost]
public ActionResult Index(SalesViewModel vm)
{
var t = SalesDBContext.GetItems().Where(x => x.Id == Convert.ToInt32(vm.Item)).FirstOrDefault();
vm.itemlist.Add(t);
PopDrodown();
return View(vm);
}
private void PopDrodown()
{
ViewBag.Items = SalesDBContext.GetItems();
}
項目添加到列表中的下拉下應該顯示在表格中。但是,當我通過按下添加來從下拉列表中發回回選定的項目時,它會向控制器返回空值itemlist
,並且以前添加的項目不存在。我怎樣才能避免這個問題?
它給了我一個錯誤'對象引用未設置爲對象的實例。' – Daybreaker
您是否保留了@if(Model.itemlist!= null)'check?你在哪一行獲得NRE? –
不,它說錯誤是在'vm.itemlist.Add(t);'我有一個錯誤'對象引用未設置爲對象的實例'' – Daybreaker