17 messaggi dal 08 giugno 2010
salve a tutti,
il mio problema è il seguente:
ho la classe con un attributo di tipo List<...>

ho una view fortemente tipizzata con la mia classe in cui visualizzo la mia lista.

quando dal submit richiamo il controller e gli passo l'oggetto, la list risulta sempre vuota, anche se viene popolata correttamente.
mi chiedo se c'è qualche accorgimento per casi di questo tipo che io non riesco a individuare....
spero che le informazioni che ho dato siano sufficienti altrimenti inserisco l'esempio dettagliato.
In view cosa c'è per rappresentare quella List<..>?
17 messaggi dal 08 giugno 2010
<% int numeroRighe = Model.Partecipanti.Count;
if (numeroRighe > 0)
{
int i = 1;
EsercitazioneMVC.Models.Discente objDiscente;%>
<table border="0" >

<TR>
<TD> </TD>
<TD>Cognome </TD>
<TD>Nome</TD>
</TR>
<TR>
<TD>
<% objDiscente = (EsercitazioneMVC.Models.Discente)Model.Partecipanti[0]; %>
<%= Html.ActionLink("Delete", "Elimina", new { id = objDiscente.IDDiscente })%>
</TD>
<TD> <%= objDiscente.Cognome%></TD>
<TD> <%= objDiscente.Nome%></TD>

</TR>
<%while (i < numeroRighe)
{
objDiscente = (EsercitazioneMVC.Models.Discente)Model.Partecipanti[i]; %>
<TR>
<TD>
<%= Html.ActionLink("Delete", "Nuovo", new { id = objDiscente.IDDiscente })%>
</TD>
<TD> <%= objDiscente.Cognome%></TD>
<TD> <%= objDiscente.Nome%></TD>

</TR>

<% i++;
}
} %>
17 messaggi dal 08 giugno 2010
il problema è proprio questo, giusto? devo usare un controllo specifico per gestire questo caso?
Ciao e scusa per il ritardo nella risposta

Non capisco cosa intendi quando parli di "controllo specifico". Per capire meglio il problema, cerca di "metterti nei panni" di ASP.NET che, nell'invocare una action che ha dei parametri, cerca di popolare questi parametri con il contenuto della richiesta HTTP.

Ora, parliamo in generale e senza arrivare alla complicazione della collection di oggetti: se tu parti da una view che questi dati li visualizza dentro dei div o degli span e non fornisce editor, essi non verranno mai inclusi nella POST Http, semplicemente perché non fanno parte di una form. Quindi o li metti in session da qualche parte sul server, o nisba

Il model binder arriva dopo questi ragionamenti e ti consente di personalizzare come ASP.NET MVC valorizzi i parametri delle action. Ma prima dovresti dare una risposta alla problematica in alto.
17 messaggi dal 08 giugno 2010
ho capito perfettamente quello che dici (forse perchè sei molto più chiaro di me)....

per fare in modo che la mia lista sia inclusa nel POST Http dove dovrei collocarla? con la session ok, funziona ... giustamente ...

quando parlo di controllo specifico intendo oggetti asp.net (con runat=server per intenderci)... immagino che la soluzione sia caricare la mia collection in un datagrid ... o qualcosa di simile per MVC .... no?
17 messaggi dal 08 giugno 2010
descrivo meglio il mio caso...

Model
public class Corso
{
private int mIDCorso;
.
.
.
private List<Discente> mpartecipanti;

View
<div class="editor-label">
<%= Html.LabelFor(model => model.Partecipanti)%>
</div>
<% List<SelectListItem> parte = new List<SelectListItem>();%>
<%

foreach (EsercitazioneMVC.Models.Discente obj in Model.Partecipanti)
{
parte.Add(new SelectListItem
{
Text = obj.Cognome + " " + obj.Nome,
Value = obj.IDDiscente.ToString(),
Selected = false
});
}
%>

<div class="editor-field">
<%= Html.ListBoxFor(model => model.Partecipanti, parte)%>
</div>


controller
public ActionResult Nuovo(Corso objC)
{
....
}

l'attributo Partecipanti di objC è vuoto ...
17 messaggi dal 08 giugno 2010
help... temo che la mia domanda preveda una risposta così scontata da non riceverla ...

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.