C# 模型中的对象在Post后为空
在Index()中,我返回带有模型C# 模型中的对象在Post后为空,c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,在Index()中,我返回带有模型anlassdailmodel的视图,在那里我有对象Anlass和List,它们都充满了数据 我使用此列表作为视图中窗体的下拉列表 但是,当我想要提交表单时,ObjectAnlass为Null,但是下拉列表中的变量具有该值 如何获取对象中包含数据的模型? 型号: 公共类AnlassDetailModel { 公共Anlass Anlass{get;set;} public List Kategories=新列表(); 公共int-KategorieId{get;
anlassdailmodel
的视图,在那里我有对象Anlass
和List
,它们都充满了数据我使用此列表作为视图中窗体的下拉列表
但是,当我想要提交表单时,Object
Anlass
为Null,但是下拉列表中的变量具有该值如何获取对象中包含数据的模型?
型号:
公共类AnlassDetailModel
{
公共Anlass Anlass{get;set;}
public List Kategories=新列表();
公共int-KategorieId{get;set;}
}
控制器:
public ActionResult Index()
{
AnlassDetailModel model = new AnlassDetailModel()
{
Anlass = Anlass.GetAnlass(),
Kategories = Kategorie.GetKategorieBezeichnung()
};
return View("~/Views/AnlassDetail.cshtml", model);
}
[HttpPost]
public ActionResult Cat(AnlassDetailModel model)
{
//Here the Model only has value in KategorieId but not in Anlass
if (model.Anlass.Kategories == null)
model.Anlass.Kategories = new List<Kategorie>();
model.Anlass.Kategories.Add(Kategorie.GetKategorieById(model.KategorieId));
return View("~/Views/AnlassDetail.cshtml", model);
}
public ActionResult Index()
{
AnlassDetailModel模型=新的AnlassDetailModel()
{
Anlass=Anlass.GetAnlass(),
Kategories=Kategorie.getkategoriebezeichung()
};
返回视图(“~/Views/anlassdail.cshtml”,model);
}
[HttpPost]
公共行动结果类别(AnlassDetailModel)
{
//在这里,模型仅在KategorieId中有值,而在Anlass中没有值
if(model.Anlass.Kategories==null)
model.Anlass.Kategories=新列表();
添加(Kategorie.GetKategorieById(model.KategorieId));
返回视图(“~/Views/anlassdail.cshtml”,model);
}
视图:
@使用(Html.BeginForm(“Cat”,“Anlass”,FormMethod.Post))
{
@DropDownListFor(m=>m.KategorieId,新选择列表(Model.Kategories,“Value”,“Text”),“Auswählen”)
}
这可能有效。替换它。您必须保存它才能将其发送到数据库
[HttpPost]
public ActionResult Cat(AnlassDetailModel model)
{
if (model.Anlass.Kategories == null)
model.Anlass.Kategories = new List<Kategorie>();
model.Anlass.Kategories.Add(Kategorie.GetKategorieById(model.KategorieId));
model.SaveChanges();
return View("~/Views/AnlassDetail.cshtml", model);
}
[HttpPost]
公共行动结果类别(AnlassDetailModel)
{
if(model.Anlass.Kategories==null)
model.Anlass.Kategories=新列表();
添加(Kategorie.GetKategorieById(model.KategorieId));
model.SaveChanges();
返回视图(“~/Views/anlassdail.cshtml”,model);
}
问题在于数据模型
当您在第一个请求中传递模型时,您用值填充模型
public ActionResult Index()
{
AnlassDetailModel model = new AnlassDetailModel()
{
Anlass = Anlass.GetAnlass(),
Kategories = Kategorie.GetKategorieBezeichnung()
};
return View("~/Views/AnlassDetail.cshtml", model);
}
然后这些数据填充到视图中的控件中,然后当您尝试发布数据时,这是一个新的请求,传递的唯一数据是绑定到视图中控件的数据
因此,如果要在发布数据后重新填充数据,则需要为控件重新填充数据
[HttpPost]
public ActionResult Cat(AnlassDetailModel model)
{
AnlassDetailModel model = new AnlassDetailModel()
{
Anlass = Anlass.GetAnlass(),
Kategories = Kategorie.GetKategorieBezeichnung()
};
return View("~/Views/AnlassDetail.cshtml", model);
}
这不是问题所在。我甚至无法到达那里,因为模型大部分是空的。锁定我最近发表的评论“Object Anlass为Null”。我在你的视图中看不到任何Anlass控件。为什么Anlass不应该为null?“对象Anlass为null”。在您的视图中,我没有看到任何Anlass绑定控件。为什么Anlass不应该为null?
public ActionResult Index()
{
AnlassDetailModel model = new AnlassDetailModel()
{
Anlass = Anlass.GetAnlass(),
Kategories = Kategorie.GetKategorieBezeichnung()
};
return View("~/Views/AnlassDetail.cshtml", model);
}
[HttpPost]
public ActionResult Cat(AnlassDetailModel model)
{
AnlassDetailModel model = new AnlassDetailModel()
{
Anlass = Anlass.GetAnlass(),
Kategories = Kategorie.GetKategorieBezeichnung()
};
return View("~/Views/AnlassDetail.cshtml", model);
}