C# 无法使我的ViewModel在MVC ASP.NET中工作
要使viewmodel正常工作,我有很多困难。作为上下文,我使用一个viewmodel来使用另一个项目中的两个模型。这些模型包含localdb中的用户信息和他们选择的设备。但是,我当前无法使用视图在一个视图上显示这两个模型的数据,因此我创建了一个viewmodel 然而,我目前收到: 错误:“System.Collections.Generic.IEnumerable”不包含“UserID”的定义,并且找不到接受“System.Collections.Generic.IEnumerable”类型的第一个参数的扩展方法“UserID”(是否缺少using指令或程序集引用?) 所有模型对象都会发生此错误。如果我能绕过它,这将是一个功能视图模型的第一步。任何帮助都将不胜感激 User.cs-模型(项目中:Faceoface) UserDeviceViewModel.cs(在项目中:FaceofaceWebSite)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”类型
移除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的方面。UserDeviceViewModelUserDeviceViewModel
包含名为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;