Я работаю над веб-приложением MVC3. Я хочу список категорий, отображаемых при редактировании blo из системы управления приложениями. В моей модели просмотра у меня есть следующее свойство, определенное для списка selectlistitems для категорий.
/// <summary>
/// The List of categories
/// </summary>
[Display(Name = "Categorie")]
public IEnumerable<SelectListItem> Categories { get; set; }
Следующий шаг, мой контроллер содержит следующее действие редактирования, в котором список элементов selectlistitems заполняется из базы данных.
public ActionResult Edit(Guid id)
{
var blogToEdit = _blogService.First(x => x.Id.Equals(id));
var listOfCategories = _categorieService.GetAll();
var selectList = listOfCategories.Select(x =>new SelectListItem{Text = x.Name, Value = x.Id.ToString(), Selected = x.Id.Equals(blogToEdit.Category.Id)}).ToList();
selectList.Insert(0, new SelectListItem{Text = Messages.SelectAnItem, Value = Messages.SelectAnItem});
var viewModel = new BlogModel
{
BlogId = blogToEdit.Id,
Active = blogToEdit.Actief,
Content = blogToEdit.Text,
Title = blogToEdit.Titel,
Categories = selectList //at this point i see the expected item being selected
//Categories = new IEnumerable<SelectListItem>(listOfCategories, "Id", "Naam", blogToEdit.CategorieId)
};
return View(viewModel);
}
Когда я устанавливаю точку останова перед возвратом представления, я вижу, что выбранный список заполняется так, как я ожидал. Таким образом, на данный момент все выглядит нормально. Режим просмотра полностью заполнен. Затем, на мой взгляд (я использую Razor), у меня есть следующие два правила, которые должны отображать для меня список избранных.
@Html.LabelFor(m => m.Categories) @Html.DropDownListFor(model=>model.Categories, Model.Categories, Model.CategoryId)
@Html.ValidationMessageFor(m => m.Categories)
Когда я запускаю код и открываю представление для редактирования своего блога, я могу видеть все правильные данные. Также выбранный список отображается правильно, но элемент, который я хочу выбрать, потерял его. Как это может быть? До тех пор, пока точка зрения не вернется с видом, все в порядке. Но когда я просматриваю веб-страницу в браузере, selectlist присутствует только с правильным выбором. Что мне здесь не хватает? Или делать неправильно?