88 messaggi dal 18 aprile 2018
Buonasera a tutti,
ho creato il controller applicationUser che rappresenta i "Clienti" della mia applicazione a loro sono collegate delle note appunto nella tabella NOTE, cosi suddivisa: IDNota,Testo,DataIns,UserID.
Nell'azione index del controller Clienti ho inserito questo:

 public ActionResult Index()
        {
            var usr = db.Users.Include(x => x.Note.Testo).ToList() ;


            return View(usr);

        }

e nella visualizzazione:
 <td> 
        @Html.DisplayFor(modelItem => item.Note.Testo)
        </td>



Naturalmente non funziona...
Grazie in anticipo
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
la lambda che fornisci all'include deve indicare una proprietà di navigazione come x.Note e non una proprietà scalare come x.Note.Testo. Quindi prova con:
var usr = db.Users.Include(x => x.Note).ToList();


Poi dalla view sarai in grado di recuperare il valore di Testo come stai già facendo.
@Html.DisplayFor(modelItem => item.Note.Testo)


Se non dovesse funzionare ancora, posta il codice che hai nella view.

ciao,
Moreno

Enjoy learning and just keep making
88 messaggi dal 18 aprile 2018
Ciao Moreno,
la prima prova che ho fatto era proprio cosi nel controller
var usr = db.Users.Include(x => x.Note).ToList();


comunque non funziona mentre al contrario cioè dalla views delle note si vedono entrambi... boh, comunque ti allego il codice della visualizzazione.

@model IEnumerable<Toeletta18.Models.ApplicationUser>

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Nome)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Cognome)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Telefono)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Cellulare)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.DataDiNascita)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Sesso)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Indirizzo)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Cap)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Provincia)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Email)
        </th>
       <th>
           Note

       </th>
               
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Nome)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Cognome)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Telefono)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Cellulare)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.DataDiNascita)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Sesso)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Indirizzo)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Cap)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Provincia)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Email)
           
        </td>
        <td> 
        @Html.DisplayFor(modelItem => item.Note.Testo)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>
    </tr>
}

</table>



Chiaramente possono esserci più note per lo stesso utente e l'ideale è che stampi l'utente una volta sola e sotto le varie note a lui correlate.. comunque se già si vedessero non sarebbe male :)
Grazie come sempre della tua disponibilità
Modificato da Mirko2018 il 19 giugno 2018 21.08 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
puoi chiarire cosa intendi con "Non funziona"? Hai un errore? Oppure non viene visualizzato nulla?

Enjoy learning and just keep making
88 messaggi dal 18 aprile 2018
Le note non vengono visualizzate,
forse dovrei cambiare nell'entitymodel
public virtual Animale Animali { get; set; }
        public virtual Appuntamento Appuntamenti { get; set; }
        public virtual Nota Note { get; set; }

con
        public virtual ICollection<Animale> Animali { get; set; }
        public virtual ICollection<Appuntamento> Appuntamenti { get; set; }
        public virtual ICollection<Nota> Note { get; set; }

e fare una classe con
        public IEnumerable<Animale> Animali { get; set; }
        public IEnumerable<Appuntamento> Appuntamenti { get; set; }
        public IEnumerable<Nota> Note { get; set; }


ho finito le idee
Modificato da Mirko2018 il 19 giugno 2018 23.35 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Beh, questo non è sufficiente
@Html.DisplayFor(modelItem => item.Note.Testo)

Dovresti fare un ciclo for su item.Note, credo che sia una collezione. Infatti hai scritto:

sotto le varie note a lui correlate..

Quindi presumo che Note sia una collezione di oggetti Nota.

Prova con:
@foreach (var nota in item.Note) {
<p>@nota.Testo</p>
}


ciao,
Moreno

Enjoy learning and just keep making
88 messaggi dal 18 aprile 2018
Errore in
item.Note

La funzione foreach non può funzionare con variabili di tipi Nota perchè Nota non contiene una definizione di istanza pubblica per GetEnumerator
11.886 messaggi dal 09 febbraio 2002
Contributi
Ok, vuol dire che Nota non è una collezione.
Se esiste un rapporto uno-a-molti tra l'item e le sue note, devi mappare questa relazione come tale nel DbContext.


forse dovrei cambiare nell'entitymodel


Certo, se per ogni item ci sono più note, la proprietà di navigazione deve essere di tipo ICollection<Nota>.
Il mapping tra le due entità come l'hai fatto nel DbContext?
Modificato da BrightSoul il 19 giugno 2018 23.59 -

Enjoy learning and just keep making

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.