Я использую DataAnnotations для проверки ошибок в моем приложении asp.net mvc, я также использую строго типизированные ViewModels.asp.net mvc multiselect запомнить состояние после обратной передачи
Моя проверка ошибок работает нормально и отправляет обратно к моему представлению сообщения об ошибках, если поле пустое. Однако у меня есть MultiSelect/Listbox в моей форме, который мне нужно запомнить, это состояние после ошибки.
На данный момент мой ViewModel выглядит следующим образом (я только включены соответствующие свойства):
public class ProfilePageViewModel : PageViewModel
{
public IList<FavouriteGenreViewModel> FavGenres { get; set; }
[Required(ErrorMessage = "*")]
public string SelectedGenres { get; set; }
public IDictionary<int, string> GenresList { get; set; }
}
Это мое действие в мой контроллер:
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);
}
. . .
Мой MultiSelect принимает список FavouriteGenreViewModel-х для выбора параметров в GenresList, он делает это с помощью AutoMapper в действии GET, но, очевидно, я не могу использовать AutoMapper в сообщении, потому что он забудет мои опубликованные значения.
Я думал об использовании запятой delimmated строки идентификаторов вместо списка FavouriteGenreViewModel, таким образом, я могу повторно использовать значение, однажды отправленное назад ... однако я надеюсь, что у кого-то есть более элегантный способ иметь дело с Эта проблема.
Спасибо!
Пол