2012-05-07 3 views
0

Вместо того, чтобы использовать контроль помощника CheckBoxList Я хочу использовать шаблоны редактор MVC Framework:Создать EditorTemplate для ViewModel вместо CheckBoxList

В Shared \ EditorTemplate У меня есть TemplateViewModel.cshtml

@model ITMS.ViewModels.TemplateViewModel 

<p class="checkbox"> 
@Html.CheckBoxFor(x => x.IsChecked) 
@Html.HiddenFor(x => x.Id) 
@Html.LabelFor(x => x.Name) 
</p> 

В качестве шаблона должен иметь такое же имя, как и модели представления ... здесь мы идем:

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

В Home \ Delete.cshtml у меня есть:

@model IEnumerable<ITMS.ViewModels.TemplateViewModel> 

@foreach (var item in Model) 
{ 
    @Html.EditorFor(m => item) 
} 

Результат в файле Delete.cshtml является полным беспорядком.

Я просто хочу, чтобы мой статус проверки и имя были видны, а идентификатор скрыт где-то.

Как исправить мой TemplateViewModel.cshtml/Delete.cshtml?

+1

«это полный беспорядок» не имеет смысла. Опишите вашу проблему в деталях. –

ответ

0

В вашей Delete.cshtml избавиться от цикла Еогеаспа и просто:

@model IEnumerable<ITMS.ViewModels.TemplateViewModel> 
@Html.EditorForModel() 

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

Также убедитесь, что ваш шаблон редактора находится в ~/Views/Shared/EditorTemplates/TemplateViewModel.cshtml. В вашем вопросе вы написали Shared\EditorTemplate, который является неправильным адресом (вы забыли s в конце). Шаблоны работают по соглашениям, которые вы должны соблюдать.

+0

благодарит Дарин, но я просто подумал, почему я должен выбирать этот подход с помощью EditorTemplates, а не просто комментировать мою модель просмотра с помощью DataTypes? Или другой подобный подход. Почему EditorTemplate? – Pascal

+0

@Pascal, я понимаю, что вы подразумеваете под аннотированием модели представления с помощью DataTypes и что это связано с настраиваемым шаблоном редактора, который вы написали. Основное преимущество шаблонов редакторов заключается в том, что они упрощают ваш код представления и генерируют правильные имена для ваших полей ввода, поэтому связующее устройство по умолчанию может десериализовать значения обратно. –

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

  • Нет связанных вопросов^_^