Ciao,
innanzitutto è importante che le 3 caselle titolo, sottotitolo e oggetto delle varie lingue abbiano attributi
name diversi, in modo che sia poi possibile distinguerli. Io predisporrei anche un quarto campo hidden in cui mettere il nome (o la sigla) della lingua a cui i 3 campi appartengono.
come faccio ad intercettare i campi di input presenti nelle partial view (B)
Non ha molta importanza come sia stato generato l'html, se con partial o lato client con del javascript.
Lato server, quando ASP.NET MVC riceve il form, ciò che vede solo solo le coppie chiave-valore inviate col form. Dato che non si tratta di WebForms, non esistono "controlli server" il cui stato viene ripristinato dopo un post. Ed ecco spiegata l'importanza di valorizzare gli attributi
name in maniera univoca perché essi saranno usati come chiavi all'invio del form.
Leggi questa discussione, ti dà uno spunto per valorizzare l'attributo name in modo che poi il model binder possa ricostruire una lista di oggetti.
http://forum.aspitalia.com/forum/post/403972/Inserire-Lista-Proprieta-Model-Interno-Form.aspxSupponiamo che le tue caselle vengano generate così:
<h2>Italiano</h2>
<input type="hidden" name="[0].Lingua" value="it" />
<div><input type="text" name="[0].Titolo" value="" /></div>
<div><input type="text" name="[0].Sottotitolo" value="" /></div>
<div><input type="text" name="[0].Oggetto" value="" /></div>
<h2>Inglese</h2>
<input type="hidden" name="[1].Lingua" value="en" />
<div><input type="text" name="[1].Titolo" value="" /></div>
<div><input type="text" name="[1].Sottotitolo" value="" /></div>
<div><input type="text" name="[1].Oggetto" value="" /></div>
Come vedi, i name sono differenziati dalla presenza di un indice che servirà al modelbinder per capire che quelli sono elementi di una lista.
Lato server potrai recuperare quei valori in maniera strutturata in questo modo:
[HttpPost]
public async Task<ActionResult> Aggiorna(List<Contenuto> contenuti) {
//qui leggi contenuti
}
Dove Contenuto sarà un tipo di oggetto creato da te, in cui hai messo le proprietà Titolo, Sottotitolo, Oggetto e Lingua.
public class Contenuto {
public string Titolo {get;set;}
public string Sottotitolo {get;set;}
public string Oggetto {get;set;}
public string Lingua {get;set;}
}
ciao,
Moreno