ciao Mirko,
cerchiamo di capire se è realmente necessario modificare i nomi delle proprietà. La tua esigenza è questa:
Nome: Pallino
nel template dovrà essere scritto NOME2: PALLINO
Ok, dunque hai bisogno che l'
etichetta sia diversa, cioè il testo che si trova
di fianco al campo. Il nome della proprietà può anche restare identico, il che sarebbe un vantaggio perché potresti riutilizzare i tipi Stutende e Cliente che hai già.
non posso di conseguenza usare le labelfor perchè sarebbe stronglytyped
Non sei obbligato ad usare LabelFor. Quando generi il form avrai cura di inserire questo esatto codice HTML per il campo Nome:
<input type="text" id="Nome" name="Nome" value="@Model.Nome" />
(Non ho usato alcun helper di MVC).
Mentre per l'etichetta scriverai
<label for="Nome">Nome2</label>
L'utente, nella sua form, non vedrà mai apparire il testo "Nome", perché l'abbiamo usato in punti non visibili, cioè come attributo for, come attributi id della textbox, e come token nell'attributo value.
Ciò che vedrà, invece, è Nome2 perché questo è il testo della label.
Se usi il template come View di MVC, alle sue spalle potrà esserci una stessa Action tipo questa
[HttpPost]
public ActionResult Invia(Studente studente){
...
}
...e questa andrà bene per il template generato per qualsiasi utente, perché ricorda che abbiamo modificato solo il testo visualizzato (Nome2 anziché Nome) e non i nomi delle proprietà.
Non resta che determinate con quale criterio dovrà apparire Nome2 anziché Nome.
Puoi crearti un dizionario per tradurre Nome in Nome2, oppure puoi conservare questa traduzione nel database, il che sarebbe utile se le etichette devono essere personalizzate da utente ad utente. Oppure puoi lasciare che sia l'utente stesso a modificarsi quei testi.
Oppure ancora puoi inserire i nomi delle label su un attributo
Description che poni sopra la proprietà stessa.
public class Studente
{
[Required, Description("Nome2")]
public string Nome { get; set; }
}
pensi che possa funzionare? In questo modo non dovrai crearti DTO o altro.
ciao,
Moreno
Modificato da BrightSoul il 30 ottobre 2013 08.32 -