簡體   English   中英

ViewModel 中的列表在控制器中為空

[英]List from ViewModel is empty in controller

今天我發現了一個非常奇怪的問題。 我在 .net core mvc 中編寫了應用程序。

我有兩個模型:

public class Package{
public Int PackId{get; set;};
//some fields
public ICollection<Shipment> shipments{get; set;}//list with other models! 
}
public class Shipment{
Int Id{get; set;};
//some fields
[ForeignKey]
Int PackId {get; set;};
Package package{get;set;}

}

所以你可以看到一個包裹有很多批貨物,但一批貨物只屬於一個包裹(一對多關系)。

此外,我還有 ViewModel:

AddViewModel{
//there are some fields from package
//and here are some fields from shipment
[BindProperty]
public ICollection<Shipment> shipments
}

我的控制器方法:

[HttpPost]
AddShipment(AddViewModel viewModel){
//some code here

return View(viewModel);
}

[HttpGet]
Add(){
var viewModel = new AddViewModel ();
return View("AddShipment",viewModel)}

而且... viewModel中來自視圖的所有內容viewModel填充,但斷點顯示public ICollection<Shipment> shipments為空,這很奇怪。 有什么問題嗎? 如何綁定或標記視圖上的某些輸入應綁定為該列表中的下一個模型?

試試這個:

[HttpGet]
Add() {
    var shipmentList = context.Shipments.ToList();
    var viewModel = new AddViewModel { shipments = shipmentList };
    return View("AddShipment", viewModel);
}

所以,有一個解決方案。 我們需要在構造函數中創建空列表。 否則,空指針存在一些問題。

AddViewModel{
//there are some fields from package
//and here are some fields from shipment
public AddViewModel(){
shipments = new List<Shipment>();
}
[BindProperty]
public ICollection<Shipment> shipments
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM