Html.EditorFor показывает правильное количество элементов, но не данные - PullRequest
1 голос
/ 23 августа 2011

Я работаю над своим первым приложением ASP.NET MVC 3 и пытаюсь показать ингредиенты определенного мороженого на странице создания.

У меня есть модель просмотра для страницы, котораяимеет такую ​​структуру:

public class IceCreamViewModel
{
   ...
   public IEnumerable<IngredientViewModel> Ingredients { get; set; }
}

(есть и другие свойства, но они не имеют отношения к обсуждению)

Ingredients заполняетсяCreate действие на контроллере, и я проверил, что он содержит нужные мне данные.

IngredientViewModel имеет следующую структуру:

public class IngredientViewModel
{
   public int Id { get; set; }
   public string Name { get; set; }
   public bool IsChecked { get; set; }
}

В представлении Создать у меня естьпопытался отобразить коллекцию ингредиентов, чтобы пользователь мог проверить, какие ингредиенты есть в рецепте (например, арахис, яйцо и т. д.), и я делаю что-то вроде этого:

@Html.EditorFor(m => m.Ingredients)

Я написали шаблон редактора для этого, который выглядит следующим образом:

@model IceCream.ViewModels.Ingredients.IngredientViewModel
<div>
  @Html.HiddenFor(m => m.Id)
  @Html.LabelFor(m => m.Name)
  @Html.CheckBoxFor(m => m.IsChecked)
</div>

Я хотел бы показать несколько ярлыков и флажков для каждого из моих ингредиентов, но то, что отображается, это правильное количество ярлыков/ флажок записи, но все они говорят «имя», а не тимя ингредиента, которое находится в IngredientViewModel.Так что я, конечно, здесь что-то не так делаю.Он, очевидно, знает, что у него есть N элементов для перебора, но он не собирает свойства этих элементов.Навигация?


Обновление

Итак, все, что я закончил, это переключил мой LabelFor на TextBoxFor, и мои значения появились ...как они, конечно.(усталый, долгий день) - @LabelFor использует название объекта или аннотированный DisplayName для объекта.Теперь все работает хорошо ... двигайтесь вперед, здесь ничего не видно ...

1 Ответ

1 голос
/ 23 августа 2011

Вы пытаетесь создать метку для свойства Name (как если бы вы хотели, чтобы пользователь изменил имя ингредиента) вместо фактического отображения имени в качестве метки для флажка.

Как насчет изменения:

@Html.LabelFor(m => m.Name)

... до:

 @m.Name

Или, еще лучше:

@model IceCream.ViewModels.Ingredients.IngredientViewModel
<div>
  @Html.HiddenFor(m => m.Id)
  <label for="@m.Id">@m.Name</label>
  @Html.CheckBoxFor(m => m.IsChecked)
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...