2013-04-12 3 views
4

Я хочу отобразить страницу «Редактировать», используя отражение, прокрутить все свойства моего объекта и создать правильный элемент управления редактирования для каждого свойства. Мое представление выглядит достаточно хорошо, поэтому я запускаю приложение, и элементы управления для редактирования отображаются так, как ожидалось, НО, скажем, я хочу редактировать объект с id = 4, как правило, я должен был бы на странице этого объекта один раз с редактированием элементы управления для каждого свойства, проблема в том, что я получаю один и тот же объект более одного раза, объект повторяется несколько раз на странице с теми же элементами управления и свойствами. Я что-то упустил?MVC 4 Html.EditorFor не работает

... 
@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>Test</legend> 
     <table> 
     @{ 
      var props = Model.GetType().GetProperties();} 
      @foreach (var prop in props) 
      { 
       <tr> 
        <td><div>@Html.EditorFor(model => Model, prop.GetValue(Model, null))</div></td> 
       </tr>         
      } 
     </table> 
    </fieldset> 
} 
... 
+0

Интересно, почему вы не можете использовать html-помощник для каждого из свойств вашей модели. –

+0

@von Просто потому, что я хочу, чтобы элементы управления редактированием динамически, я не хочу добавлять элементы управления вручную при изменении чего-либо в моей модели. – Stacked

ответ

3

Второй аргумент редактора. Помощник не делает вообще ничего, что вы думаете. Кажется, вы пытаетесь предоставить ему значение и ожидаете, что это значение будет отображаться в сгенерированном текстовом поле, но это не тот аргумент. Этот аргумент называется additionalViewData, и, как следует из его названия, вы можете передавать пользовательские дополнительные данные вида в шаблон редактора. Но если у вас нет настраиваемого шаблона редактора, который делает что-то полезное с данными этого вида, вы не можете ожидать, что многое произойдет.

Я бы порекомендовал вам прочитать following blog post, чтобы лучше ознакомиться с шаблонами в ASP.NET MVC.

Но для ответа на ваш вопрос, похоже, вы пытаетесь написать собственный шаблон, который будет отображать каждый из свойств вашего объекта. Вы можете написать собственный шаблон редактора, который будет выполнять эту работу. Брэд Уилсон проиллюстрировал эту концепцию в following post (см. Раздел «Неглубокое погружение против глубокого погружения» в конце статьи).

+1

+1 Мне всегда нравится, когда вы так объясняете этот вопрос для такого вопроса. –

+0

Я должен согласиться с von v. Здесь :) – Ropstah

Смежные вопросы