C# 模型中的对象在Post后为空

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;

在Index()中,我返回带有模型
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);
    }