Ah frainteso questo.
Se sai cosa è possibile aggiungere Dropdowns, vorrei sempre avere un valore sul tuo modello. MVC li imposterà come valore predefinito se non viene ricevuto nulla.
EDIT: è ancora possibile accedere alla raccolta moduli in un modo più crudo dai controller withing utilizzando
Request.Form.Keys
Request.QueryString.Keys
Request["ExpectedDropdownName"]
Naturalmente questi saranno tutti i valori inviati dal form in modo avrete bisogno di un modo per riconoscere uno dei i tuoi menu a discesa come un prefisso o qualcosa del genere. Per esempio
foreach (var key in Request.Form.AllKeys.Where(k => k.StartsWith("dynamic-dropdown-"))
{
var selectedValue = Request[key];
}
io ancora non capisco come si intende elaborare menu di scorrimento dinamici se non sai che cosa saranno e questo può causare alcuni problemi e farò convalida interamente dinamico e lato client (non sicuro al 100%). Ciò potrebbe presentare anche alcuni problemi di sicurezza, ma ci sono alcuni sceanari in cui potresti usare questo e presumo che tu ne abbia uno.
Se questo non è il caso, non dimenticare che solo perché un Modello ha una proprietà, non deve essere posticipato affatto.
Si potrebbe fare:
public class MyModel
{
[Required]
public string FirstName { get; set; }
public string PossibleDropdown1 { get; set; }
public string PossibleDropdown2 { get; set; }
}
Il controller farà la cosa migliore per popolare il modello, ma se non si passa alcuni campi indietro dal modulo, che sarà solo nullo e l'azione sarà ancora lavoro.
Ho anche implementato scenari molto più complessi come questo utilizzando oggetti che sono figli del modello principale e tutti i valori nulli. Ciò richiede un po 'di lavoro elaborato intorno alle chiamate ajax a EditorTemplates in Mock Views per garantire che il prefisso sia corretto per l'analisi di MVC, ma qui non lo analizzerò.
Hai provato a usare Ajax –
@COLDTOLD questo è un problema sul lato server, Ajax non è una soluzione che avrebbe alcun impatto –
@Marek Karbarz è possibile aggiornare una parte parziale della pagina aggiungendo nuovi elementi con l'Ajax –