Modello Binding ai tipi multipli con stessi nomi di proprietà
-
22-09-2019 - |
Domanda
Ho una visione che contiene 2 caselle di riepilogo: Pubblico & Locale
Sto cercando di inviare un modulo che contiene l'indice selezionato di entrambi per il mio controller, che ha un metodo di azione di questa firma:
public JsonResult Submit(Audience aud, Locale loc)
{
// do stuff
}
Il problema che sto avendo è sia Pubblico Locale e hanno una proprietà ID, in modo che il modello Binder è un po 'confuso su cui assegnare i valori selezionati. Ottenere sia assegnato il valore '1', quando Pubblico dovrebbe avere '2' e Locale dovrebbe avere '1'
La domanda è: come posso ottenere la pagina di distinguere tra i due quando è la presentazione? Abbiamo provato anteponendo il valore ID per Locale con "locale.", Così lo stringa di parametro che viene passato come i dati al controller sembra
"&locale.id=1&audience.id=2"
ma questo non sembra funzionare.
Qualche suggerimento? Se è necessario ulteriori informazioni, io li fornisce.
Grazie
Dave
Soluzione
Usa:
public JsonResult Submit([Bind(Prefix = "audience")]Audience aud,[Bind(Prefix = "locale")]Locale loc)
{
// do stuff
}
Ogni campo pubblico dovrebbe avere il prefisso "pubblico" nel nome nel campo HTML: audience.id, audience.name, ...
<input id="audience_name" name="audience.Name" type="text" value="" />
Altri suggerimenti
Si dovrebbe avere un ViewModel specifica per prendere dati nel vostro Azione Invia. Questo oggetto dovrebbe avere AudienceId e LocaleID. Quando si creano i menù a discesa è necessario creare loro con nomi che corrispondono a ciò che ci si aspetta.