15 messaggi dal 18 gennaio 2017
Premesso che appunto se esiste una risposta affermativa alla domanda io non lo so, quello che ho provato a fare è stato questo, all'interno della view model utilizzata dalla view ho instanziato un oggetto del tipo di un altra view model, come faccio per le liste.
Ad es:
public class ViewModelVistaAziende
    {

        public int IdAzienda { get; set; }
        public string ragioneSociale { get; set; }
        public string Indirizzo { get; set; }
        public string CAP { get; set; }
        public string nomeGruppo { get; set; }
        public string nomeRegione { get; set; }
        public string nomeProvincia { get; set; }
        public string nomeComune { get; set; }

        public List<VistaAziende> aziende = new List<VistaAziende>();
        public List<GruppoAzienda> gruppoaziende = new List<GruppoAzienda>();
        public AddAziendaModel AddAzienda = new AddAziendaModel();   /////////////////questa è la riga in questione

}

    public class AddAziendaModel
    {
        [Required]
        public int IdProvincia { get; set; }

        [Required]
        public string ragioneSociale { get; set; }

        [Required]
        public int IdRegione { get; set; }

        [Required]
        public int IdComune { get; set; }


        [DataType(DataType.Password)]
        [StringLength(6, MinimumLength = 1)]
        public string CAP { get; set; }
        [Required]
        public string Via { get; set; }

        [Required]
        public string Lat { get; set; }

        [Required]
        public string Lon { get; set; }

        public List<Regione> regione = new List<Regione>();
        public List<Provincia> provincia = new List<Provincia>();
        public List<Comune> comune = new List<Comune>();
    }


Nel momento in cui nel controller richiamo:
 public ActionResult Aggiungi()
        {
            var model = new ViewModelVistaAziende();
            
            using (DBMsaEntities1 db = new DBMsaEntities1())
            {
                model.AddAzienda.regione = db.Regioni                   
                    .Include(m => m.Azienda)       
                    .Include(m => m.Province)              
                    .ToList();

            }


L'errore restituito è chel'istanza dell'objectContext è stata eliminata ecc.
Cosa che non capisco dato che ho inserito gli Include per questo motivo, e sono gli unici che mi fa inserire,
in debug ho visto come all'interno della var model non ci sono errori come nel caso in cui non s'inserisce l'include e non trova il riferimento alle altre tabelle.
Grazie in anticipo per l'aiuto.
Ciao,
intanto per la domanda in oggetto: non è possibile utilizzare due model in una view. La soluzione è quella che proponi: utilizzare un view model che si compone dei due model.
Quindi direi di spostare l'attenzione sull'ORM: stai usando Entity Framework?
Il primo suggerimento è di usare dei sostantivi per i model quindi AddAzienda dovrebbe diventare Azienda - deduco - e magari il ViewModel diventa GruppoAziendaViewModel.
Hai già fatto una prova senza gli attributi Required?
IdAzienda è mappato come auto incrementale?
AddAziendaModel immagino non sia riferito a un'entità nel database.
Controlla che le proprietà siano settate come virtual e Includi quelle coinvolte in Lazy Loading.
Infine controlla che il context non sia chiuso troppo presto.

Ormai programmano tutti... ma la professionalità appartiene a pochi

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.