Sviluppo una soluzione asp.net in mvc con durandal/brezza.Menu a discesa riempito con opzioni fornite da un enum (lato server) con Breeze
Ho un menu a discesa in cui l'elenco è popolato da un Enum fornito da Entity Framework Code First. Ecco il lato server modello
public enum EnumCategory
{
Cat1,
Cat2,
Cat3,
Cat4
}
Ecco la tabella che utilizzano questo enum:
public class Transport
{
[Key]
public int Id { get; set; }
public EnumCategory Category { get; set; }
...
}
La mia domanda: come recuperare questi valori di lato server enum per essere in grado di riempire il mio lato cliente dropdown? Devo creare un nuovo array manualmente lato client in questo modo:
var categories = [
{ id: '' , description: '' },
{ id: 'Cat1', description: 'Category 1' },
{ id: 'Cat2', description: 'Category 2' },
{ id: 'Cat3', description: 'Category 3' },
{ id: 'Cat4', description: 'Category 4' }];
mia vista mostra questa discesa in questo modo:
<select data-bind="options: $root.categories,
optionsText: 'description',
optionsValue: 'id',
value: category,
validationOptions: { errorElementClass: 'input-validation-error' },
valueUpdate: 'afterkeydown'">
</select>
sembra ridondante per me avere a ricreare un elenco di clienti valori lato perché abbiamo già questo elenco di valori lato server.
Qualche idea?
Grazie.
L'esempio che mi dai è in particolare quando l'elenco di valori proviene da un database. La mia domanda riguarda il recupero dell'elenco di valori da un enum (lato server). Questo non è lo stesso approccio. Non voglio memorizzare valori diversi nel mio db. Grazie comunque. – Bronzato
Non è necessario mantenere le descrizioni enum nel db. Aggiungi DescrizioneAttributo a ciascun valore enum e quindi crea una matrice di coppie id e descrizione sul server. Utilizzare Enum.GetValues () e Attribute.GetCustomAttributes() per ottenere l'id e la descrizione. – pawel
Ciao Bronzato, sto suggerendo di definire Enum una volta sul server e poi accedervi sul client utilizzando un controller API. Questo è effettivamente quello che sto facendo per compilare un elenco di fusi orari sul client. L'elenco dei fusi orari è alimentato dalla classe .NET TimeZoneInfo, che è simile al tuo scenario enum, per quanto generato dal codice e non da un DB. –