J'utilise les DataAnnotations pour la vérification des erreurs sur mon application asp.net mvc, j'utilise aussi ViewModels fortement typé.asp.net mvc multiselect se souvenir de l'état après la publication
Ma vérification d'erreur fonctionne correctement et affiche à ma vue des messages d'erreur si un champ est vide. Cependant, j'ai une MultiSelect/Listbox sur mon formulaire dont je dois me rappeler qu'il est l'état après une erreur.
Au moment de mon ViewModel ressemble à ceci (je n'ai inclus propriétés pertinentes):
public class ProfilePageViewModel : PageViewModel
{
public IList<FavouriteGenreViewModel> FavGenres { get; set; }
[Required(ErrorMessage = "*")]
public string SelectedGenres { get; set; }
public IDictionary<int, string> GenresList { get; set; }
}
Ceci est mon action dans mon contrôleur:
public ActionResult Profile(ProfilePageViewModel viewModel)
{
if(!ModelState.IsValid)
{
viewModel.CountriesList = dropDownTasks.GetCountries();
viewModel.GendersList = dropDownTasks.GetGenders();
viewModel.GenresList = dropDownTasks.GetGenres();
viewModel.TimezonesList = dropDownTasks.GetTimezones();
viewModel.FavGenres =
return View(viewModel);
}
. . .
Mon MultiSelect prend une liste de FavouriteGenreViewModel de pour sélectionner les options dans GenresList, il le fait en utilisant AutoMapper dans l'action GET, mais évidemment, je ne peux pas utiliser AutoMapper sur le poste parce qu'il va oublier mes valeurs affichées.
J'ai pensé à utiliser une chaîne d'identifiants comma delimmated au lieu d'une liste de FavouriteGenreViewModel, de cette façon je peux réutiliser la valeur une fois posté ... cependant j'espère que quelqu'un a une façon plus élégante de traiter ce problème.
Merci!
Paul