2015-04-16 3 views
3

В настоящее время я создаю сайт в ASP.NET MVC, где я хотел бы использовать EditorTemplates для отображения списка внутри моего ViewModel. RowViewModel имеет список RowDataViewModels. Я пытаюсь сделать Create View для RowViewModel, где я могу использоватьASP.NET MVC EditorTemplate не используется

@Html.EditorFor(model => model.RowData) 

и поэтому мне нужно EditorTemplate. Я создал и EditorTemplate под:

Views/Shared/EditorTemplates/RowDataViewModel.cshtml

И я также попытался положить папку EditorTemplates в папке/Home/представление, но ничего не похоже на работу. На панели редактирования нет точек останова. Я думаю, что раньше делал это, но я мог что-то забыть.

Любые идеи?

RowViewModel:

public class RowViewModel 
{ 
    [Required] 
    [Display(Name="Name")] 
    public string Name { get; set; } 

    public List<RowDataViewModel> RowData { get; set; } 
} 

RowDataViewModel:

public class RowDataViewModel 
{ 
    public string Name { get; set; } 
    public string Value { get; set; } 
    public string DataType { get; set; } 
} 

EditorTemplate - RowDataViewModel.cshtml:

@using iDealWebRole.ViewModels 
@model RowDataViewModel 

@Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
<div class="form-group"> 
    @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
     @Html.EditorFor(model => model.Value, new { htmlAttributes = new { @class = "form-control" } }) 
     @Html.ValidationMessageFor(model => model.Value, "", new { @class = "text-danger" }) 
    </div> 
</div> 
+0

ли вы имеете в виду '@ Html.EditorFor (модель => model.RowData)' (не '@ model.EditorFor (...)')? –

+0

Просто опечатка в моем посте. Исправлено это сейчас :) –

+0

Код, который вы показали здесь, в порядке и будет работать правильно. Должна быть другая проблема. –

ответ

-2

Проблема здесь: @Html.EditorFor(model => model.RowData)

Вы должны использовать редактор для каждой строки в ROWDATA, как:

@for (int i = 0; i < Model.RowData.Count(); i++) 
{ 
    @Html.EditorFor(model => Model.RowData[i]) 
} 
+0

Это сгенерировалось бы в двух экземплярах 'id' (недопустимый html) и дублирующих атрибутах' name', которые не будут привязываться к коллекции в ответ. –

+0

Отредактированный ответ на комментарий Стивена Мюнке. – saniokazzz

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