2013-07-23 2 views
3

У меня есть четыре общих редактора: Tab, Group, Line & Item.Html.TextBoxFor() не генерирует никакой разметки html

Tab.cshtml:

@model AWMCCRM.Web.ViewModels.Tab 
@Html.HiddenFor(vm => vm.Name) 
<div id="[email protected](" ", string.Empty)" class="tab-content"> 
    @Html.EditorFor(vm => vm.Groups) 
</div> 

Group.cshtml:

@model AWMCCRM.Web.ViewModels.Group 
@Html.HiddenFor(vm => vm.Name) 
<fieldset> 
    <legend>@Model.Name</legend> 
    @Html.EditorFor(vm => vm.Lines) 
</fieldset> 

Line.cshtml:

@model AWMCCRM.Web.ViewModels.Line 
@Html.HiddenFor(vm => vm.Name) 
@Html.EditorFor(vm => vm.Items) 

Item.cshtml:

@model AWMCCRM.Web.ViewModels.Item 

<div class="@Model.DivClass"> 
    <p class="@Model.PClass"> 
     Html.LabelFor(vm => vm.ValueString, Model.Name); 
     Html.TextBoxFor(vm => vm.ValueString); 
    </p> 
</div> 

корреспондент ViewModels:

public class Tab 
{ 
    public string Name { get; set; } 
    public List<Group> Groups { get; set; } 
} 
public class Group 
{ 
    public string Name { get; set; } 
    public List<Line> Lines { get; set; } 
} 
public class Line 
{ 
    public string Name { get; set; } 
    public List<Item> Items { get; set; } 
} 
public class Item 
{ 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public string ValueString { get; set; } 
    public string DivClass { get; set; } 
    public string PClass { get; set; } 
} 

В моей главной View Я это:

@Html.EditorFor(vm => vm.Tabs) 

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

<div id="tab-Tab-1" class="tab-content"> 
<input id="Tabs_0__group_Name" name="Tabs[0].group.Name" type="hidden" value="Group0" /> 
<fieldset> 
    <legend>Group0</legend> 
<input id="Tabs_0__group_line_Name" name="Tabs[0].group.line.Name" type="hidden" value="Line0" /> 
<div class="_20"> 
    <p class=""> 
    </p> 
</div> 
</fieldset> 
</div> 

Как вы можете видеть, div и p генерируются, но нет текстового поля или метки.

Я также попытался это в шаблоне элемента вместо этого, но он не работает либо:

Html.TextBoxFor(vm => Model.ValueString); 

Любые идеи, почему или то, что мне нужно сделать?

Благодаря

+0

Пожалуйста, убедитесь, что модель не является нулевым. –

+0

@UmairP, я только дважды проверил, и модель не равна нулю. Он имеет значение, а также Model.ValueString. Любые другие мысли? – PostureOfLearning

ответ

7

Хорошо, я почти слишком смущен, чтобы опубликовать решение, но здесь ...

я пропускал символ «@» в начале строки;

в моем item.cshtml

Html.LabelFor(vm => vm.ValueString, Model.Name); 
    Html.TextBoxFor(vm => vm.ValueString); 

должен быть

@Html.LabelFor(vm => vm.ValueString, Model.Name); 
    @Html.TextBoxFor(vm => vm.ValueString); 
Смежные вопросы