没有使用ASP.NET MVC EditorTemplate

时间:2015-04-16 07:55:04

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我目前正在ASP.NET MVC中创建一个网站,我想使用EditorTemplates在我的ViewModel中显示一个List。 RowViewModel有一个RowDataViewModel列表。我正在尝试为RowViewModel创建一个Create View,我可以使用

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

因此我需要一个EditorTemplate。我创建了EditorTemplate:

Views/Shared/EditorTemplates/RowDataViewModel.cshtml

我还尝试将EditorTemplates文件夹放在/ Home / view文件夹下,但似乎没有任何效果。在editortemplate中没有遇到任何断点。我想我之前就是这样做的,但我可能会忘记一些事情。

有什么想法吗?

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>

1 个答案:

答案 0 :(得分:-2)

问题在于:@Html.EditorFor(model => model.RowData)

您应该将您的编辑器用于RowData中的每一行,例如:

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