Html.TextBoxFor()不生成任何html标记

Pos*_*ing 3 asp.net-mvc razor asp.net-mvc-4

我有4个共享的EditorTemplates:Tab,Group,Line&Item.

Tab.cshtml:

@model AWMCCRM.Web.ViewModels.Tab
@Html.HiddenFor(vm => vm.Name)
<div id="tab-@Model.Name.Replace(" ", string.Empty)" class="tab-content">
     @Html.EditorFor(vm => vm.Groups)
</div>
Run Code Online (Sandbox Code Playgroud)

Group.cshtml:

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

Line.cshtml:

@model AWMCCRM.Web.ViewModels.Line
@Html.HiddenFor(vm => vm.Name)
@Html.EditorFor(vm => vm.Items)
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

对应的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; }
}
Run Code Online (Sandbox Code Playgroud)

在我的主视图中我有这个:

  @Html.EditorFor(vm => vm.Tabs)
Run Code Online (Sandbox Code Playgroud)

生成的代码如下所示:

<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>
Run Code Online (Sandbox Code Playgroud)

如您所见,生成div和p,但没有文本框或标签.

我也在项目模板中试过这个,但它也没有用:

Html.TextBoxFor(vm => Model.ValueString);
Run Code Online (Sandbox Code Playgroud)

任何想法为什么或我需要做什么?

谢谢

Pos*_*ing 8

好吧,我几乎不好意思发布解决方案,但这里是......

我在线的开头错过了'@';

在我的item.cshtml中

    Html.LabelFor(vm => vm.ValueString, Model.Name);
    Html.TextBoxFor(vm => vm.ValueString);
Run Code Online (Sandbox Code Playgroud)

应该

    @Html.LabelFor(vm => vm.ValueString, Model.Name);
    @Html.TextBoxFor(vm => vm.ValueString);
Run Code Online (Sandbox Code Playgroud)