Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法使我的ViewModel在MVC ASP.NET中工作_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 无法使我的ViewModel在MVC ASP.NET中工作

C# 无法使我的ViewModel在MVC ASP.NET中工作,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,要使viewmodel正常工作,我有很多困难。作为上下文,我使用一个viewmodel来使用另一个项目中的两个模型。这些模型包含localdb中的用户信息和他们选择的设备。但是,我当前无法使用视图在一个视图上显示这两个模型的数据,因此我创建了一个viewmodel 然而,我目前收到: 错误:“System.Collections.Generic.IEnumerable”不包含“UserID”的定义,并且找不到接受“System.Collections.Generic.IEnumerable”类型

要使viewmodel正常工作,我有很多困难。作为上下文,我使用一个viewmodel来使用另一个项目中的两个模型。这些模型包含localdb中的用户信息和他们选择的设备。但是,我当前无法使用视图在一个视图上显示这两个模型的数据,因此我创建了一个viewmodel

然而,我目前收到:

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

所有模型对象都会发生此错误。如果我能绕过它,这将是一个功能视图模型的第一步。任何帮助都将不胜感激

User.cs-模型(项目中:Faceoface)

UserDeviceViewModel.cs(在项目中:FaceofaceWebSite)


移除Ienumerable

@WebSite.Models.UserDeviceViewModel的模型面

在控制器中查看:

公共行动结果索引() { var viewModel=新建 FaceToFaceWebsite.Models.UserDeviceViewModel()

返回视图(viewModel); }


移除Ienumerable

@WebSite.Models.UserDeviceViewModel的模型面

在控制器中查看:

公共行动结果索引() { var viewModel=新建 FaceToFaceWebsite.Models.UserDeviceViewModel()

返回视图(viewModel); }


移除Ienumerable

@WebSite.Models.UserDeviceViewModel的模型面

在控制器中查看:

公共行动结果索引() { var viewModel=新建 FaceToFaceWebsite.Models.UserDeviceViewModel()

返回视图(viewModel); }


移除Ienumerable

@WebSite.Models.UserDeviceViewModel的模型面

在控制器中查看:

公共行动结果索引() { var viewModel=新建 FaceToFaceWebsite.Models.UserDeviceViewModel()

返回视图(viewModel); }


您可以将正确类型的ViewModel传递给视图:

在你看来,你有:

@model IEnumerable<FaceToFaceWebsite.Models.UserDeviceViewModel>
var viewModel = new FaceToFaceWebsite.Models.UserDeviceViewModel(); 
            return View(viewModel);
尝试传递ViewModel的列表:

var viewModel = new List<FaceToFaceWebsite.Models.UserDeviceViewModel>(); 
            return View(viewModel);
为什么会收到错误消息?

因为您的ViewModel没有
UserId、CodeName

但是您的用户类有UserId和CodeName

因此,在ViewModel中,您将按如下方式访问:

ViewModel.User.UserId
ViewModel.User.CodeName

像这样:

<th>@Html.DisplayNameFor(model => model.User.UserID)</th>
<th>@Html.DisplayNameFor(model => model.User.CodeName)</th>
@Html.DisplayNameFor(model=>model.User.UserID)
@DisplayNameFor(model=>model.User.CodeName)

您可以将正确类型的ViewModel传递给视图:

在你看来,你有:

@model IEnumerable<FaceToFaceWebsite.Models.UserDeviceViewModel>
var viewModel = new FaceToFaceWebsite.Models.UserDeviceViewModel(); 
            return View(viewModel);
尝试传递ViewModel的列表:

var viewModel = new List<FaceToFaceWebsite.Models.UserDeviceViewModel>(); 
            return View(viewModel);
为什么会收到错误消息?

因为您的ViewModel没有
UserId、CodeName

但是您的用户类有UserId和CodeName

因此,在ViewModel中,您将按如下方式访问:

ViewModel.User.UserId
ViewModel.User.CodeName

像这样:

<th>@Html.DisplayNameFor(model => model.User.UserID)</th>
<th>@Html.DisplayNameFor(model => model.User.CodeName)</th>
@Html.DisplayNameFor(model=>model.User.UserID)
@DisplayNameFor(model=>model.User.CodeName)

您可以将正确类型的ViewModel传递给视图:

在你看来,你有:

@model IEnumerable<FaceToFaceWebsite.Models.UserDeviceViewModel>
var viewModel = new FaceToFaceWebsite.Models.UserDeviceViewModel(); 
            return View(viewModel);
尝试传递ViewModel的列表:

var viewModel = new List<FaceToFaceWebsite.Models.UserDeviceViewModel>(); 
            return View(viewModel);
为什么会收到错误消息?

因为您的ViewModel没有
UserId、CodeName

但是您的用户类有UserId和CodeName

因此,在ViewModel中,您将按如下方式访问:

ViewModel.User.UserId
ViewModel.User.CodeName

像这样:

<th>@Html.DisplayNameFor(model => model.User.UserID)</th>
<th>@Html.DisplayNameFor(model => model.User.CodeName)</th>
@Html.DisplayNameFor(model=>model.User.UserID)
@DisplayNameFor(model=>model.User.CodeName)

您可以将正确类型的ViewModel传递给视图:

在你看来,你有:

@model IEnumerable<FaceToFaceWebsite.Models.UserDeviceViewModel>
var viewModel = new FaceToFaceWebsite.Models.UserDeviceViewModel(); 
            return View(viewModel);
尝试传递ViewModel的列表:

var viewModel = new List<FaceToFaceWebsite.Models.UserDeviceViewModel>(); 
            return View(viewModel);
为什么会收到错误消息?

因为您的ViewModel没有
UserId、CodeName

但是您的用户类有UserId和CodeName

因此,在ViewModel中,您将按如下方式访问:

ViewModel.User.UserId
ViewModel.User.CodeName

像这样:

<th>@Html.DisplayNameFor(model => model.User.UserID)</th>
<th>@Html.DisplayNameFor(model => model.User.CodeName)</th>
@Html.DisplayNameFor(model=>model.User.UserID)
@DisplayNameFor(model=>model.User.CodeName)

您正在传递列表(
IEnumerable
),而您的视图代码应该是
FaceofeWebSite.Models.UserDeviceViewModel
您正在传递列表(
IEnumerable
),而您的视图代码应该是
FaceofeWebSite.Models.UserDeviceViewModel
您正在传递列表(
IEnumerable
),而您的视图代码应该是eWebSite.Models.UserDeviceViewModel的方面(
IEnumerable
),而您正在传递列表(
IEnumerable
),而您的视图代码应该是eWebSite.Models.UserDeviceViewModel的方面。UserDeviceViewModel
UserDeviceViewModel
包含名为
User
的属性,而不是
UserID
(这是
User
的属性。您的循环需要

@foreach (var item in Model)
{
    <tr>
        <td>@Html.DisplayFor(m => item.User.UserID)</td>
        <td>@Html.DisplayFor(m => item.User.CodeName)</td>
@foreach(模型中的变量项)
{
@DisplayFor(m=>item.User.UserID)
@DisplayFor(m=>item.User.CodeName)
注意,在这种情况下,表标题不起作用

另外请注意,您并没有真正使用真正的“视图模型”。视图模型只包含在视图中显示/编辑所需的属性(而不仅仅是转储其他模型)。根据您显示的视图代码,它应该是

public class UserDeviceViewModel
{
    public int UserID { get; set; }
    public string CodeName { get; set; }
    public int DeviceID { get; set; }
    public IList<SelectListItem> Devices { get; set; }
}
公共类UserDeviceViewModel
{
public int UserID{get;