C# MVC通过列表<;T>;从视图到控制器为空
请您知道为什么我的列表在从视图传递模型后为空。。我尝试了我在这里找到的任何解决方案,但仍然一无所获。列表是具有其他视图的模型类的一部分 模型视图:C# MVC通过列表<;T>;从视图到控制器为空,c#,asp.net-mvc,model-view-controller,null,C#,Asp.net Mvc,Model View Controller,Null,请您知道为什么我的列表在从视图传递模型后为空。。我尝试了我在这里找到的任何解决方案,但仍然一无所获。列表是具有其他视图的模型类的一部分 模型视图: public class PorizeniWzView { public PorizeniWzDataView ProjectDataView { get; set; } public PorizeniWzSuppliersView SupplierView { get; set; } public PorizeniWzPro
public class PorizeniWzView
{
public PorizeniWzDataView ProjectDataView { get; set; }
public PorizeniWzSuppliersView SupplierView { get; set; }
public PorizeniWzProjectStateView ProjectStateView { get; set; }
public WzUberView WzUberView { get; set; }
public PorizeniWzEventView CurrentEventView { get; set; }
public PorizeniWzEventView NextEventView { get; set; }
public PorizeniWzPatternsView PatternView { get; set; }
public PorizeniWzPhasesView CurrentPhaseView { get; set; }
public List<PorizeniWzEventView> ListOfProjectEvents { get; set; }
public List<int> ListOfProjectEventInt { get; set; }
public List<PorizeniWzProjectStateView> ListOfProjectStates { get; set; }
}
控制器(保存形式):这里我在数据库中更新事件
[HttpPost]
public ActionResult a1_FillUpEventsSave(PorizeniWzView view)
{
if(!ModelState.IsValid) KontrolaHelp.ErrorModel(ModelState);
var t = _repo.GetPodlePK(view.ProjectDataView.Project_Id);
if (t == null) KontrolaHelp.Error("Chyba DB. Projekt pořízení WZ nenalezen!");
using (var transakce = _jednotka.Transakce_New())
{
foreach (var ev in view.ListOfProjectEvents)
{
if (ev.BasicEvent.HasValue && ev.BasicEvent.Value)
{
var e = t?.Events1.Single(x => x.Event_Id == ev.Event_Id);
if (e == null) continue;
e.DatePlanned = ev.DatePlanned;
_repoEvents.Update(e);
}
}
t.ProjectState_Id = (int) PorizeniWzSTAV.a17_Nastaveny;
_repo.Update(t);
transakce.Commit();
}
return RedirectToAction("Index");
}
用于初始化事件列表的方法
public List<PorizeniWzEventView> GetEventsForProject(int? id)
{
var repoEventTypes = new TabPorizeniWzEventsTypesRepo(_jednotkaPrace);
var set = GetSet().Where(t => t.ProjectId == id).OrderBy(t => t.Order);
var list = set.ToList();
foreach (var porizeniWzEventView in list){
porizeniWzEventView.ListOfStates = repoEventTypes.DoplnStavyProTypUdalosti(porizeniWzEventView.EventTypeId);
}
return set.ToList();
}
public List getevents项目(int?id)
{
var repoEventTypes=新的TabPorizeniWzEventsTypesRepo(_jednotkaPrace);
var set=GetSet().Where(t=>t.ProjectId==id).OrderBy(t=>t.Order);
var list=set.ToList();
foreach(列表中的var porizeniWzEventView){
porizeniWzEventView.ListOfStates=repoEventTypes.DoplnStavyProTypUdalosti(porizeniWzEventView.EventTypeId);
}
返回set.ToList();
}
三个列表中的哪一个?您是否尝试在任何地方创建这些列表?仅在模型中定义它们不会创建它们,因此基于您的代码,它们始终为空,因为它们从未创建过。请将操作中的代码包含在控制器中。错误就在那里。你还没有在任何地方初始化你的列表。。。可以在viewModel中创建一个方法,在其中初始化列表,然后将其设置为属性。然后您可以从控制器调用此方法。谢谢帮助。。它是项目事件列表。当进入查看时,我在控制器中初始化列表。在视图中,我看到列表中的项目,但当我将模型传递回控制器时,它的值为NULL。三个列表中的哪一个?您是否尝试在任何位置创建这些列表?仅在模型中定义它们不会创建它们,因此基于您的代码,它们始终为空,因为它们从未创建过。请将操作中的代码包含在控制器中。错误就在那里。你还没有在任何地方初始化你的列表。。。可以在viewModel中创建一个方法,在其中初始化列表,然后将其设置为属性。然后您可以从控制器调用此方法。谢谢帮助。。它是项目事件列表。当进入查看时,我在控制器中初始化列表。在视图中,我看到列表中的项,但当我将模型传递回控制器时,它为NULL。
[HttpPost]
public ActionResult a1_FillUpEventsSave(PorizeniWzView view)
{
if(!ModelState.IsValid) KontrolaHelp.ErrorModel(ModelState);
var t = _repo.GetPodlePK(view.ProjectDataView.Project_Id);
if (t == null) KontrolaHelp.Error("Chyba DB. Projekt pořízení WZ nenalezen!");
using (var transakce = _jednotka.Transakce_New())
{
foreach (var ev in view.ListOfProjectEvents)
{
if (ev.BasicEvent.HasValue && ev.BasicEvent.Value)
{
var e = t?.Events1.Single(x => x.Event_Id == ev.Event_Id);
if (e == null) continue;
e.DatePlanned = ev.DatePlanned;
_repoEvents.Update(e);
}
}
t.ProjectState_Id = (int) PorizeniWzSTAV.a17_Nastaveny;
_repo.Update(t);
transakce.Commit();
}
return RedirectToAction("Index");
}
public List<PorizeniWzEventView> GetEventsForProject(int? id)
{
var repoEventTypes = new TabPorizeniWzEventsTypesRepo(_jednotkaPrace);
var set = GetSet().Where(t => t.ProjectId == id).OrderBy(t => t.Order);
var list = set.ToList();
foreach (var porizeniWzEventView in list){
porizeniWzEventView.ListOfStates = repoEventTypes.DoplnStavyProTypUdalosti(porizeniWzEventView.EventTypeId);
}
return set.ToList();
}