Я работаю над веб-приложением MVC3. Мне нужен список категорий, отображаемых при редактировании бл из системы управления приложениями. В моей модели представления у меня есть следующее свойство, определенное для списка элементов списка для категорий.
/// <summary>
/// The List of categories
/// </summary>
[Display(Name = "Categorie")]
public IEnumerable<SelectListItem> Categories { get; set; }
На следующем шаге мой контроллер содержит следующее действие редактирования, где список элементов selectlist заполняется из базы данных.
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)
Когда я запускаю код и открываю представление для редактирования своего блога, я вижу все правильные данные. Кроме того, список выбора отображается правильно, но элемент, который я хочу выбрать, потерял свой выбор. Как это может быть? До тех пор, пока точка зрения не возвращается с видом, все в порядке. Но когда я просматриваю веб-страницу в браузере, список выбора там только без правильного выбора. Что мне здесь не хватает? Или делаешь неправильно?