384 messaggi dal 26 agosto 2007
Ciao a tutti,
questo è il mio Model

public class MessageSetTypeCollection<T> : CollectionBase where T : MessageSetType, new()
    {
        public string Name { get; set; }
        public string[] Tags { get; set; }

        public MessageSetType this[int index]
        {
            get
            {
                return (MessageSetType)List[index];
            }
        }

        public void Add(MessageSetType value)
        {
            List.Add(value);
        }
    }


Queste sono due action di test nel controller

public ActionResult TestAction()
    {
        MessageSetTypeCollection<MessageSetType> Model = new MessageSetTypeCollection<MessageSetType>();
        Model.Add(new MessageSetType()
        {
            Alert = "test"  // Alert is a public property of the MessageSetType class
        });
        Model.Add(new MessageSetType()
        {
            Alert = "test2"
        });
        return View(Model);
    }

    [HttpPost]
    public void TestAction(MessageSetTypeCollection<MessageSetType> Model)
    {
        return;
    }


Questa è la view

@using (Html.BeginForm())
    {
        @Html.EditorFor(a => a[0].Alert)
        @Html.EditorFor(a => a[1].Alert)
    
        <input type="submit" value="OK" />
    }


Quando faccio il submit della form alla action TestAction, la proprietà InnerList del parametro Model ha un Count di 0 elementi. Perchè?

Ho anche testato questo codice con il model type List<MessageSetType> invece di MessageSetTypeCollection<MessageSetType> e tutto funziona correttamente. Dov'è l'errore?

Grazie!!

Lunga vita e prosperità!!
384 messaggi dal 26 agosto 2007
Ho risolto ereditando MessageSetTypeCollection<T> da List<T> invece che da CollectionBase

Lunga vita e prosperità!!

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.