Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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# Html.BeginCollectionItem上的列表在提交{get;set;}时出错_C#_List_Model View Controller - Fatal编程技术网

C# Html.BeginCollectionItem上的列表在提交{get;set;}时出错

C# Html.BeginCollectionItem上的列表在提交{get;set;}时出错,c#,list,model-view-controller,C#,List,Model View Controller,我正在用MVC开发一个没有实体框架的应用程序,它有一个包含多个对象和结构列表的对象 我使用html.begincollectionitem()生成并添加新的子对象,效果很好。提交时出现问题 在这方面: [MinLength(1)] public List<DescCota> CotasFicha { get; set; } @model Productiva.Models.DescCota @{ ViewBag.Title=“Fichas”; } @使用(Html.BeginCol

我正在用MVC开发一个没有实体框架的应用程序,它有一个包含多个对象和结构列表的对象

我使用html.begincollectionitem()生成并添加新的子对象,效果很好。提交时出现问题

在这方面:

[MinLength(1)]
public List<DescCota> CotasFicha { get; set; }
@model Productiva.Models.DescCota
@{
ViewBag.Title=“Fichas”;
}
@使用(Html.BeginCollectionItem(“DescCota”))
{
@TextBoxFor(Model=>Model.ID,新的{@class=“form control”,@type=“text”,@placeholder=“ID Cota”})
@Html.TextBoxFor(Model=>Model.Nombre,新的{@class=“form control”,@type=“text”,@placeholder=“Nombre”})
@CheckBoxFor(Model=>Model.Activa,新的{@class=“form check-input”,@type=“checkbox”})
阿提沃?
}

什么是
Html.BeginCollectionItem
?它不是标准的MVC特性,它是一个nuget包。我以此作为参考:
public class Ficha
    {
        public int entry { get; set; }
        [Required(ErrorMessage = "El nombre de la ficha es obligatorio")]
        public string nombreFicha { get; set; }
        [Required(ErrorMessage = "Este campo es obligatorio")]
        public string nombreLargoFicha { get; set; }
        [Required(ErrorMessage = "La imagen es requerida")]
        public string RutaImgFicha { get; set; }
        private byte[] imagenFicha { get; set; }
        public string RutaImgRF { get; set; }
        private byte[] imagenRF { get; set; }
        public string UltimoMensaje;
        public DateTime CreateDate { get; set; }
        public DateTime VersionDate { get; set; }
        public int UserSign { get; set; }
        public string UserName { get; set; }
        public int UserSign2 { get; set; }
        public string UserName2 { get; set; }

        //Cotas
        [MinLength(1)]
        public List<DescCota> CotasFicha { get; set; }
        //Características Globales
        [MinLength(1)]
        public List<Caracteristica> CaracteristicasFicha { get; set; }
        //Productos Asociados
        [MinLength(1)]
        public List<Producto> ProductosFicha { get; set; }

        private Data.Bdto Bdto;

        #region Constructor

        public Ficha(User U, int _entry)
        {
            //Conector
            Bdto = new Data.Bdto();

            if (_entry == -1)
            {
                entry = SiguienteID();
                nombreFicha = "";
                RutaImgFicha = "";
                imagenFicha = null;
                RutaImgRF = "";
                imagenRF = null;
                UltimoMensaje = "";
                CreateDate = DateTime.Now;
                VersionDate = DateTime.Now;
                UserSign = U.UserID;
                UserName = U.UserCode;
                UserSign2 = U.UserID;
                UserName2 = U.UserCode;

                //Listas
                CotasFicha = new List<DescCota>();
                CaracteristicasFicha = new List<Caracteristica>();
                ProductosFicha = new List<Producto>();
            }
            else
            {
                //Conector
                Bdto = new Data.Bdto();

                //Ultimo.
                entry = _entry; //Si es nuevo, debe ser la ultima + 1, agregar
                nombreFicha = "";
                RutaImgFicha = "";
                imagenFicha = null;
                RutaImgRF = "";
                imagenRF = null;
                UltimoMensaje = "";
                CreateDate = DateTime.Now;
                VersionDate = DateTime.Now;
                UserSign = U.UserID;
                UserName = U.UserCode;
                UserSign2 = U.UserID;
                UserName2 = U.UserCode;

                //Listas
                CotasFicha = new List<DescCota>();
                CaracteristicasFicha = new List<Caracteristica>();
                ProductosFicha = new List<Producto>();
            }
        }

        public Ficha(User U)
        {
            //Conector
            Bdto = new Data.Bdto();

            entry = SiguienteID();
            nombreFicha = "";
            RutaImgFicha = "";
            imagenFicha = null;
            RutaImgRF = "";
            imagenRF = null;
            UltimoMensaje = "";
            CreateDate = DateTime.Now;
            VersionDate = DateTime.Now;
            UserSign = U.UserID;
            UserName = U.UserCode;
            UserSign2 = U.UserID;
            UserName2 = U.UserCode;

            //Listas
            CotasFicha = new List<DescCota>();
            CaracteristicasFicha = new List<Caracteristica>();
            ProductosFicha = new List<Producto>();
        }

        public Ficha()
        {
            //Conector
            Bdto = new Data.Bdto();

            //Listas
            CotasFicha = new List<DescCota>();
            CaracteristicasFicha = new List<Caracteristica>();
            ProductosFicha = new List<Producto>();
        }

        #endregion

        //Métodos

        #region Imagen
        //Carga Imagen (RF o Ficha)
        public bool LoadImage(System.Drawing.Image Img, bool Ficha)
        {
            bool CargaCorrecta;
            //cargo
            try
            {
                using (var ms = new MemoryStream())
                {
                    Img.Save(ms, Img.RawFormat);
                    if (Ficha)
                    {
                        imagenFicha = ms.ToArray();
                        CargaCorrecta = true;
                        //Mensaje de finalizacion
                        UltimoMensaje = "";
                    }
                    else
                    {
                        imagenRF = ms.ToArray();
                        CargaCorrecta = true;
                        //Mensaje de finalizacion
                        UltimoMensaje = "";
                    }
                }
            }
            catch (Exception e)
            {
                CargaCorrecta = false;
                UltimoMensaje = e.Message;
            }

            return CargaCorrecta;
        }

        //Retorna Imagen
        public System.Drawing.Image RetornaImagen(bool Ficha)
        {
            System.Drawing.Image Imagen;

            if (Ficha)
            {
                using (var ms = new MemoryStream(imagenFicha))
                {
                    Imagen = System.Drawing.Image.FromStream(ms);
                }
            }
            else
            {
                using (var ms = new MemoryStream(imagenRF))
                {
                    Imagen = System.Drawing.Image.FromStream(ms);
                }
            }

            return Imagen;
        }

        #endregion

        #region Cotas

        //Nueva Cota
        public void NuevaCota(string _ID, bool Act, string Nmm)
        {
            DescCota Nueva = new DescCota
            {
                entry = this.entry,
                ID = _ID,
                Activa = Act,
                Nombre = Nmm
            };

            //Agrego a ficha
            CotasFicha.Add(Nueva);
        }

        #endregion

        #region Caracteristicas

        public void NuevaCaracteristica()
        {
            Caracteristica Nueva = new Caracteristica
            {
                entry = this.entry
            };

            CaracteristicasFicha.Add(Nueva);
        }

        public void QuitarCaracteristica(Caracteristica Seleccion)
        {
            CaracteristicasFicha.Remove(Seleccion);
            //El borrar quita de la DB.
        }

        #endregion

        #region Productos

        public void NuevoProducto()
        {
            Producto Nuevo = new Producto
            {
                entry = this.entry
            };

            ProductosFicha.Add(Nuevo);
        }

        public void QuitarProducto(Producto Seleccion)
        {
            ProductosFicha.Remove(Seleccion);
            //Quito de la DB igualmente.
        }

        #endregion

        #region BaseDatos

        //Guardar o Actualizar (Save)
        public void Guardar()
        {

        }

        //OpenID
        private int SiguienteID()
        {
            return Bdto.CC_WEB_SiguienteIDFicha(); 
        }


        #endregion
    }
   public struct DescCota
    {
        public int entry { get; set; }
        [Required(ErrorMessage = "El Identificador es requerido")]
        public string ID { get; set; }
        [Required(ErrorMessage = "El nombre de la cota es obligatorio")]
        public string Nombre { get; set; }
        public bool Activa { get; set; }
        public DateTime CreateDate { get; set; }
        public DateTime VersionDate { get; set; }
        public int UserSign { get; set; }
        public int UserSign2 { get; set; }
    }

    public class Producto
    {
        public int entry { get; set; }
        public string ItemCode { get; set; }
        public bool Valid { get; set; }
        public string ItemName { get; set; }
        public DateTime CreateDate { get; set; }
        public int UserSign { get; set; }

        private Data.Bdto Bdto;

        //Cotas por producto
        List<CotasProducto> Cotas;

        public Producto()
        {
            entry = 0;
            ItemCode = "";
            ItemName = "";

            Cotas = new List<CotasProducto>();
            Bdto = new Data.Bdto();
        }

        public Producto(int ID_)
        {
            entry = ID_;
            ItemCode = "";
            ItemName = "";

            Cotas = new List<CotasProducto>();
            Bdto = new Data.Bdto();
        }

        //Listado de controles (personalizados o no)

        public void GetItem(string Code)
        {
            ItemCode = Code;
            ItemName = Bdto.CC_WEB_GetItemName(Code);
        }

        private string GetItemName(string ItemCode)
        {
            return Bdto.CC_WEB_GetItemName(ItemCode);
        }

        public bool ExisteEnOotroModelo(out string ModelName)
        {
            bool Existe = false;

            ModelName = Bdto.CC_WEB_ValidaSiObjetoExisteEnOtroModelo(ItemCode);

            if(ModelName.Length > 1)
            {
                Existe = true;
            }

            return Existe;
        }
    }

    public struct CotasProducto
    {
        public string ItemCode { get; set; }
        public string IdCota { get; set; }
        public double ValNormal { get; set; }
        public double ValMaximo { get; set; }
        public double ValMinimo { get; set; }

        //Controles por cota
    }

    public struct Caracteristica
    {
        public int entry { get; set; }
        public string Nombre { get; set; }
        public string Detalle { get; set; }
    }