Ho una tabella top10 (come dicono i primi 10 ristoranti). Ogni 10 righe principali può contenere fino a 10 top10items associati.
Modelli
public class Top10
{
public Guid Id { get; set; }
[Required(ErrorMessage="Title Required")]
public string Title { get; set; }
}
public class Top10Item
{
public Guid Id { get; set; }
public Guid Top10Id { get; set; }
public Guid PlaceId { get; set; }
public Int16 Position { get; set; }
public Place place { get; set; }
}
Visualizza modello
public class Top10ItemsPlaceDropdown
{
public Top10 top10 { get; set; }
[Display(Name = "Place")]
public Guid SelectedPlaceId { get; set; }
public IEnumerable<Place> Places { get; set; }
public IEnumerable<SelectListItem> PlaceItems
{
get
{
return new SelectList(Places, "Id", "PlaceName");
}
}
public IEnumerable<Top10Item> items { get; set; }
}
Lego ViewModel a una vista.
Lo uso per popolare un menu a discesa nella pagina e compilare una griglia di elementi per il primo 10. L'utente può quindi selezionare un elemento dal menu a discesa, che viene quindi pubblicato dal metodo [httpPost] quando l'utente invia il modulo.
Il problema - se è un problema - è che quando la vista carica [httpGet] - tutte le proprietà - e quelle di tutti gli oggetti secondari sono valide. Tuttavia, quando la vista torna al controller [httpPost], molti sono vuoti (non validi) perché nella vista non sono nei campi del modulo e non vengono postati indietro (non è necessario che siano).
Questo significa Model.IsValid == false. Se avessi un riepilogo di convalida sulla pagina, questo lo invocherebbe.
Questo non sembra una buona pratica - ma cosa dovrei fare su questo? Il modello serve ai miei scopi quando la pagina viene caricata, ma tutto ciò di cui ho bisogno quando la pagina viene pubblicata è top10Id e SelectedPlaceId.