Asp.net mvc 在ASP.NET MVC 5中的一个视图中使用两个模型

Asp.net mvc 在ASP.NET MVC 5中的一个视图中使用两个模型,asp.net-mvc,Asp.net Mvc,我是ASP.NET MVC新手,恳请您帮助我解决此问题: 我有两个模型-授权: public int idDelegation { get; set; } public string Delegation_Name { get; set; } public string Employee_Name { get; set; } 和项目: public int idProject { get; set; } public string Project_System_Name { get; set;

我是ASP.NET MVC新手,恳请您帮助我解决此问题: 我有两个模型-授权:

public int idDelegation { get; set; }
public string Delegation_Name { get; set; }
public string Employee_Name { get; set; }
和项目:

public int idProject { get; set; }
public string Project_System_Name { get; set; }
public string Project_System_ID { get; set; }
我想在视图中显示当前授权和项目的列表,每个授权和项目都有编辑/详细信息/删除选项。 我创建了一个ViewModel DelegationProject:

public class DelegationProject
{
    public IEnumerable<Delegation> delegations { get; set; }
    public IEnumerable<Project> projects { get; set; }
}
公共类委托项目
{
公共IEnumerable委托{get;set;}
公共IEnumerable项目{get;set;}
}
在我的索引视图中,我有:

@model IEnumerable<....ViewModel.DelegationProject>
<table class="table">
    <tr>
         <th>@Html.DisplayNameFor(model => model.delegations.Employee_Name</th>
         <th>@Html.DisplayNameFor(model => model.delegations.Delegation_Name</th>
    </tr>
    @foreach (var item in Model)
    {
        <tr>
            <td>@Html.DisplayFor(itemModel => item.delegations.Employee_Name)</td>
            <td>@Html.DisplayFor(itemModel => item.delegations.Delegation_Name</td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { x => x.idDelegation }) |
                @Html.ActionLink("Details", "Details", new { x => x.idDelegation }) |
                @Html.ActionLink("Delete", "Delete", new { x => x.idDelegation })
            </td>
        </tr>
    }
</table>
@model IEnumerable
@Html.DisplayNameFor(model=>model.delegations.Employee\u Name
@Html.DisplayNameFor(model=>model.delegations.delegations\u Name
@foreach(模型中的var项目)
{
@DisplayFor(itemModel=>item.delegations.Employee\u Name)
@Html.DisplayFor(itemModel=>item.delegations.delegations\u Name
@ActionLink(“编辑”,“编辑”,新的{x=>x.idDelegation})|
@ActionLink(“详细信息”,“详细信息”,新的{x=>x.idDelegation})|
@ActionLink(“删除”,“删除”,新的{x=>x.idDelegation})
}
运行应用程序时,会收到以下错误消息:

描述:编译服务此请求所需的资源时出错。请查看以下特定错误详细信息,并适当修改源代码

编译器错误消息:CS1061:“System.Collections.Generic.IEnumerable”不包含“Employee_Name”的定义,并且找不到接受“System.Collections.Generic.IEnumerable”类型的第一个参数的扩展方法“Employee_Name”(是否缺少using指令或程序集引用?)


我尝试了stackoverflow主题和其他站点帖子中的不同内容(如列表或元组),但我无法在同一视图中使用模型并对其进行迭代。

我设法找到了解决此问题的方法

ViewModel DelegationProject保持不变,在用于索引操作的控制器中,我有:

public ActionResult Index()
{
DelegationProject viewModel = new DelegationProject();
viewModel.delegations = GetDelegations();
viewModel.projects = GetProjects();
return View(viewModel);
}
我在各自的控制器中创建了两个方法-GetDelegations()和GetProjects():

public List GetDelegations()
{
var deleg=db.Delegation.Include(d=>d.Project);
var list=新列表(deleg.ToList();
退货清单;
}
公共列表项目()
{
var projects=db.Project.Include(p=>p.Country);
var列表=新列表(项目);
退货清单;
}
我的观点是这样的:

     @model .......ViewModel.DelegationProject
     @foreach (var item in Model.delegations)
            {
                <tr>
                    <td>
                        @Html.DisplayFor(itemModel => item.Employee_Name)
                    </td>
                    <td>
                        @Html.DisplayFor(itemModel => item.Delegation_Name)
                    </td>
                </tr>
            }         
@model…….ViewModel.DelegationProject
@foreach(模型中的var项目)
{
@DisplayFor(itemModel=>item.Employee\u Name)
@DisplayFor(itemModel=>item.Delegation\u名称)
}         

希望这能对某人有所帮助。

您尚未显示控制器代码,但需要将
DelegationProject
的单个实例传递给视图(而不是
DelegationProject
的集合)。视图需要
@model DelegationProject
。然后,您需要对每个对象执行
@foreach循环(Model.delegations中的var项)
@foreach(Model.projects中的var项)
(请转到帮助文件,学习如何格式化您的问题和其中的代码)使用您尝试过的代码编辑您的问题(您没有遵循我之前评论中的代码!)关于编辑您的问题,您不了解哪一点?对不起,我似乎无法根据帮助设置文本格式。我尝试了很多次。由于无法设置答案格式,我似乎无法解决问题。我放弃了。您的视图模型
DelegationProject
包含属性
public IEnumerable委托{get;set;}
so
foreach(Model.delegations中的var项)
将起作用,因为属性
delegations
IEnumerable
。上帝只知道你的代码中还有哪些错误,但你不会编辑你的问题来显示出来,所以祝你好运。
     @model .......ViewModel.DelegationProject
     @foreach (var item in Model.delegations)
            {
                <tr>
                    <td>
                        @Html.DisplayFor(itemModel => item.Employee_Name)
                    </td>
                    <td>
                        @Html.DisplayFor(itemModel => item.Delegation_Name)
                    </td>
                </tr>
            }