MVC5将接口传递给EditorTemplate

时间:2018-10-15 15:57:52

标签: razor interface asp.net-mvc-5 mvc-editor-templates editortemplates

我正在使用MVC5 EF6.1,在那里我有一个表,该表包含20个实现相同接口的字段

public interface ITestAttribute
{
    int Id { get; set; }
    string Name { get; set; }
}

// EF entity, there are 20 models like this, for example, TestLocation: ITestAttribute
public class TestActivity : ITestAttribute
{
    public int Id { get; set; }
    public string Name { get; set; }
}
// EF entity
public class TestTable
{
    public int Id { get; set; }
    // There are 20 different fields 
    public List<TestActivity> TestActivities { get; set; }
}

在Razor视图上,我想为实现相同界面的那20个字段调用“编辑器模板”,这是因为我不想为每个属性创建20个自定义字段

@model im.DAL.TestTable

<p>Id: @Model.Id</p>
<p>@Html.EditorFor(model => model.TestActivities, "TestCtrl") </p>
<p>@Html.EditorFor(model => model.TestLocations, "TestCtrl") </p>

在Razor视图上,我需要EditorTemplate,在Shared折叠后创建文件夹,并使用以下代码添加视图

@model List<im.DAL.ITestAttribute>

@foreach (var item in Model)
{
    <p>@item.Name</p>
}

但是我收到以下错误

  

传递到字典中的模型项是类型   “ System.Collections.Generic.List 1[im.DAL.TestActivity]', but this dictionary requires a model item of type 'System.Collections.Generic.List 1 [im.DAL.ITestAttribute]”。

0 个答案:

没有答案