Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 回发时ViewModel为空_C#_Asp.net_Mvvm - Fatal编程技术网

C# 回发时ViewModel为空

C# 回发时ViewModel为空,c#,asp.net,mvvm,C#,Asp.net,Mvvm,嗨,我一直在寻找解决这个问题的办法,但我运气不好。使用my viewmodel POST无法获取数据,无论您如何操作,对象始终为空。我会把代码放进去,这样你就可以看到我指的是什么 这是我的ViewModel public class ProyectosCompletos { public IEnumerable<Proyecto> Proyectos { get; set; } public IEnumerable<Informacion> Informaci

嗨,我一直在寻找解决这个问题的办法,但我运气不好。使用my viewmodel POST无法获取数据,无论您如何操作,对象始终为空。我会把代码放进去,这样你就可以看到我指的是什么

这是我的ViewModel

public class ProyectosCompletos
{
   public IEnumerable<Proyecto> Proyectos { get; set; }
   public IEnumerable<Informacion> Informaciones { get; set; }
   public IEnumerable<Diseno> Disenos { get; set; }
   public IEnumerable<Procedimiento> Procedimientos { get; set; }
   public IEnumerable<Programacion> Programaciones { get; set; }
   public IEnumerable<Instalacion> Instalaciones { get; set; }
}
对于获取数据没有问题。我把它们拿好,看风景

public ActionResult Docente(int ListaProyectos, ProyectosCompletos viewModel)
{
    if (ModelState.IsValid)
    {
       db.Entry(viewModel.Informaciones).State = EntityState.Modified;
       db.Entry(viewModel.Disenos).State = EntityState.Modified;
       db.Entry(viewModel.Procedimientos).State = EntityState.Modified;
       db.Entry(viewModel.Programaciones).State = EntityState.Modified;
       db.Entry(viewModel.Instalaciones).State = EntityState.Modified;

       db.SaveChanges();
       return RedirectToAction("Docente");
    }
 }
但是要返回到POST表单,对象是完全空的。 最后,我提出这个观点,我会减少一点,因为它已经足够长了

@using (Html.BeginForm())
{
   @Html.AntiForgeryToken()
   @Html.ValidationSummary(true, "", new { @class = "text-danger" })
   foreach (var item in Model.Proyectos)
   {
      <h3>@item.Titulo</h3>
      @if (Model.Instalaciones != null)
      {
        foreach (var instalacion in Model.Instalaciones)
        {
           Nota: @Html.EditorFor(m => instalacion.HardwareNota, new { htmlAttributes = new { @class = "form-control" } })
           @Html.ValidationMessageFor(model => instalacion.HardwareNota, "", new { @class = "text-danger" })

           Nota: @Html.EditorFor(m => instalacion.SoftwareNota, new { htmlAttributes = new { @class = "form-control" } })
           @Html.ValidationMessageFor(model => instalacion.SoftwareNota, "", new { @class = "text-danger" })
        }
    }
 }
 <input type="submit" value="Guardar Cambios" class="btn btn-success" /> 
}
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true,“,new{@class=“text danger”})
foreach(模型项目中的var项目)
{
@项目1.提图洛
@如果(Model.Instalaciones!=null)
{
foreach(模型中的var instalacion.Instalaciones)
{
Nota:@Html.EditorFor(m=>instalacion.HardwareNota,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>instalacion.HardwareNota,“,new{@class=“text danger”})
Nota:@Html.EditorFor(m=>instalacion.SoftwareNota,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>instalacion.SoftwareNota,“,new{@class=“text danger”})
}
}
}
}

我希望你能帮助我,谢谢

默认活页夹很可能与您的
IEnumerable
s有一些问题,如果您用
List
替换这些活页夹,或者干脆用数组替换它们,那么默认活页夹应该可以工作。您不应该也向-->return RedirectToAction(“Docente”)添加一个参数(ListaProyExtos)吗@CarstenKönig我用列表替换了IEnumerable,然后我必须在每个视图模型中放入.ToList()。但结果与空对象相同
public ActionResult Docente(int? ListaProyectos)
{
   //This code is not relevant to the problem
   var viewModel = new ProyectosCompletos();
   string usuarioActualId = User.Identity.GetUserId();
   ApplicationUser usuarioActual = db.Users.FirstOrDefault(x => x.Id == usuarioActualId);
   var pro = db.Elaboraciones
              .Where(e => e.ApplicationUserID == usuarioActual.Id)
              .Select(e => new { e.ProyectoID, e.Proyecto.Titulo});
   ViewBag.ListaProyectos = new SelectList(pro, "ProyectoID", "Titulo");

    //THIS IS WHAT MATTERS
    if (ListaProyectos != null)
    {
       ViewBag.ProyectoID = ListaProyectos.Value;

       viewModel.Proyectos = db.Proyectos.Where(p => p.Archivar == false && p.ProyectoID == ListaProyectos.Value);
       viewModel.Informaciones = db.Informaciones.Where(i => i.ProyectoID == ListaProyectos.Value);
       viewModel.Procedimientos = db.Procedimientos.Where(i => i.ProyectoID == ListaProyectos.Value);
       viewModel.Disenos = db.Disenos.Where(i => i.ProyectoID == ListaProyectos.Value);
       viewModel.Programaciones = db.Programaciones.Where(i => i.ProyectoID == ListaProyectos.Value);
       viewModel.Instalaciones = db.Instalaciones.Where(i => i.ProyectoID == ListaProyectos.Value);
        }

        return View(viewModel);
    }
public ActionResult Docente(int ListaProyectos, ProyectosCompletos viewModel)
{
    if (ModelState.IsValid)
    {
       db.Entry(viewModel.Informaciones).State = EntityState.Modified;
       db.Entry(viewModel.Disenos).State = EntityState.Modified;
       db.Entry(viewModel.Procedimientos).State = EntityState.Modified;
       db.Entry(viewModel.Programaciones).State = EntityState.Modified;
       db.Entry(viewModel.Instalaciones).State = EntityState.Modified;

       db.SaveChanges();
       return RedirectToAction("Docente");
    }
 }
@using (Html.BeginForm())
{
   @Html.AntiForgeryToken()
   @Html.ValidationSummary(true, "", new { @class = "text-danger" })
   foreach (var item in Model.Proyectos)
   {
      <h3>@item.Titulo</h3>
      @if (Model.Instalaciones != null)
      {
        foreach (var instalacion in Model.Instalaciones)
        {
           Nota: @Html.EditorFor(m => instalacion.HardwareNota, new { htmlAttributes = new { @class = "form-control" } })
           @Html.ValidationMessageFor(model => instalacion.HardwareNota, "", new { @class = "text-danger" })

           Nota: @Html.EditorFor(m => instalacion.SoftwareNota, new { htmlAttributes = new { @class = "form-control" } })
           @Html.ValidationMessageFor(model => instalacion.SoftwareNota, "", new { @class = "text-danger" })
        }
    }
 }
 <input type="submit" value="Guardar Cambios" class="btn btn-success" /> 
}