将列表值传递给 ASP.NET MVC 中的视图模型 class 变量
Pass list value to view model class variable in ASP.NET MVC
我需要将记录列表传递给视图模型中的 class 变量(用户和组),但我看不到视图模型对象 (_UserAndGroupModel) 识别其 class 对象,我不确定正是我在这里所缺少的。
视图模型
public class UserGroup_ViewModel
{
public User Users { get; set; }
public Group Groups { get; set; }
}
每个 class 用户和组都有自己的变量和集合项
在下面的代码行中,我需要传递列表并分配给视图模型中的用户对象和组对象
public partial class UserManagement_Services
{
List<UserGroup_ViewModel> _UserAndGroupModel = new List<UserGroup_ViewModel>();
public void GetUserAndGroups()
{
using(var _uow = new UserManagement_UnitOfWork())
{
_UserAndGroupModel.Users= _uow.User_Repository.GetAll();
_UserAndGroupModel.Groups = _uow.Group_Repository.GetAll();
//error here ??????????????
}
}
}
控制器方法
public ActionResult AddUserInGroup()
{
var _UserAndGroupList = _userServices.GetUserAndGroups();
return PartialView("AddUserInGroup_Partial", _UserAndGroupList);
}
查看
@model IEnumerable<App.DAL.Model.UserGroup_ViewModel>
@Html.DisplayNameFor(模型=>模型)
@Html.DisplayNameFor(型号=> model.LastName)
@Html.DisplayNameFor(型号=> model.Age)
@Html.DisplayNameFor(型号=> model.EmailAddress)
@foreach (var item in Model)
{....
在执行模型 => 模型时,我看不到 ViewModel class 变量。????
你的错误源于这一行
List<UserGroup_ViewModel> _UserAndGroupModel = new List<UserGroup_ViewModel>();
_UserAndGroupModel
是一个 List
,所以当你设置
_UserAndGroupModel.Users = ..
.
这是无效的,因为 Users
是列表中 项 的 属性,而不是列表本身。
然而,这个
_UserAndGroupModel.First().Users = ...
例如会起作用。
这是答案,非常感谢 Ammar 的帮助!
public class UserGroup_ViewModel
{
public List<User> Users { get; set; }
public List<Group> Groups { get; set; }
}
.
public UserGroup_ViewModel GetUserAndGroups()
{
using(var _uow = new UserManagement_UnitOfWork())
{
_UserAndGroupModel.Users = _uow.User_Repository.GetAll().ToList();
_UserAndGroupModel.Groups = _uow.Group_Repository.GetAll().ToList();
return _UserAndGroupModel;
}
}
我会做得有点不同。您想 return 将单个视图模型转换为由用户列表和组列表组成的视图(如果我错了,请纠正我)。我会在视图模型的构造函数中将列表初始化为空(不包含任何项目):
public class UserGroup_ViewlModel
{
public UserGroup_ViewlModel()
{
Users = new List<User>();
Groups = new List<Group>();
}
public List<User> Users { get; set; }
public List<Group> Groups { get; set; }
}
然后在您的服务层构建视图模型并填充用户和组,然后 return 视图模型到调用方法,在这种情况下我假设控制器的操作方法:
public class UserManagement_Services
{
public UserGroup_ViewModel GetUserAndGroups()
{
UserGroup_ViewModel _UserAndGroupModel = new UserGroup_ViewModel();
using(var _uow = new UserManagement_UnitOfWork())
{
_UserAndGroupModel.Users = _uow.User_Repository.GetAll();
_UserAndGroupModel.Groups = _uow.Group_Repository.GetAll();
}
return _UserAndGroupModel;
}
}
只需确保 User_Repository.GetAll()
和 Group_Repository.GetAll()
的 return 类型为 List<User>
和 List<Group>
。
然后你的控制器可能看起来像这样:
public class UserController : Controller
{
private IUserManagement_Services userManagementService;
public UserController(IUserManagement_Services userManagementService)
{
this.userManagementService = userManagementService;
}
public ActionResult Index()
{
// The service will return a view model already populated with the users and groups
UserGroup_ViewlModel model = userManagementService.GetUserAndGroups();
return View(model);
}
}
在您的视图中,您将拥有以下内容,接受通过 action 方法传入的视图模型并显示用户和组:
@model MyProject.Models.UserGroup_ViewlModel
<table>
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Groups</th>
</tr>
</thead>
<tbody>
@foreach (var user in Model.Users)
{
<tr>
<td>@user.FirstName</td>
<td>@user.LastName</td>
<td>
<select>
@foreach (var group in Model.Groups)
{
<option>group.GroupName</option>
}
</select>
</td>
</tr>
}
</tbody>
</table>
上面的代码根本没有经过测试,视图中的 @ 符号可能存在一些问题。我可以看到你想要达到的目的。 table 中的用户列表,然后每行你想要一个你想要 select 的用户组的下拉列表,然后发送回控制器。这超出了 post 的范围,开始一个新的。我已经帮助您走上了正确的轨道,您只需要花更多时间阅读 ASP.NET MVC。
希望对您有所帮助:)
我需要将记录列表传递给视图模型中的 class 变量(用户和组),但我看不到视图模型对象 (_UserAndGroupModel) 识别其 class 对象,我不确定正是我在这里所缺少的。
视图模型
public class UserGroup_ViewModel
{
public User Users { get; set; }
public Group Groups { get; set; }
}
每个 class 用户和组都有自己的变量和集合项
在下面的代码行中,我需要传递列表并分配给视图模型中的用户对象和组对象
public partial class UserManagement_Services
{
List<UserGroup_ViewModel> _UserAndGroupModel = new List<UserGroup_ViewModel>();
public void GetUserAndGroups()
{
using(var _uow = new UserManagement_UnitOfWork())
{
_UserAndGroupModel.Users= _uow.User_Repository.GetAll();
_UserAndGroupModel.Groups = _uow.Group_Repository.GetAll();
//error here ??????????????
}
}
}
控制器方法
public ActionResult AddUserInGroup()
{
var _UserAndGroupList = _userServices.GetUserAndGroups();
return PartialView("AddUserInGroup_Partial", _UserAndGroupList);
}
查看
@model IEnumerable<App.DAL.Model.UserGroup_ViewModel>
@Html.DisplayNameFor(模型=>模型) @Html.DisplayNameFor(型号=> model.LastName) @Html.DisplayNameFor(型号=> model.Age) @Html.DisplayNameFor(型号=> model.EmailAddress)
@foreach (var item in Model)
{....
在执行模型 => 模型时,我看不到 ViewModel class 变量。????
你的错误源于这一行
List<UserGroup_ViewModel> _UserAndGroupModel = new List<UserGroup_ViewModel>();
_UserAndGroupModel
是一个 List
,所以当你设置
_UserAndGroupModel.Users = ..
.
这是无效的,因为 Users
是列表中 项 的 属性,而不是列表本身。
然而,这个
_UserAndGroupModel.First().Users = ...
例如会起作用。
这是答案,非常感谢 Ammar 的帮助!
public class UserGroup_ViewModel
{
public List<User> Users { get; set; }
public List<Group> Groups { get; set; }
}
.
public UserGroup_ViewModel GetUserAndGroups()
{
using(var _uow = new UserManagement_UnitOfWork())
{
_UserAndGroupModel.Users = _uow.User_Repository.GetAll().ToList();
_UserAndGroupModel.Groups = _uow.Group_Repository.GetAll().ToList();
return _UserAndGroupModel;
}
}
我会做得有点不同。您想 return 将单个视图模型转换为由用户列表和组列表组成的视图(如果我错了,请纠正我)。我会在视图模型的构造函数中将列表初始化为空(不包含任何项目):
public class UserGroup_ViewlModel
{
public UserGroup_ViewlModel()
{
Users = new List<User>();
Groups = new List<Group>();
}
public List<User> Users { get; set; }
public List<Group> Groups { get; set; }
}
然后在您的服务层构建视图模型并填充用户和组,然后 return 视图模型到调用方法,在这种情况下我假设控制器的操作方法:
public class UserManagement_Services
{
public UserGroup_ViewModel GetUserAndGroups()
{
UserGroup_ViewModel _UserAndGroupModel = new UserGroup_ViewModel();
using(var _uow = new UserManagement_UnitOfWork())
{
_UserAndGroupModel.Users = _uow.User_Repository.GetAll();
_UserAndGroupModel.Groups = _uow.Group_Repository.GetAll();
}
return _UserAndGroupModel;
}
}
只需确保 User_Repository.GetAll()
和 Group_Repository.GetAll()
的 return 类型为 List<User>
和 List<Group>
。
然后你的控制器可能看起来像这样:
public class UserController : Controller
{
private IUserManagement_Services userManagementService;
public UserController(IUserManagement_Services userManagementService)
{
this.userManagementService = userManagementService;
}
public ActionResult Index()
{
// The service will return a view model already populated with the users and groups
UserGroup_ViewlModel model = userManagementService.GetUserAndGroups();
return View(model);
}
}
在您的视图中,您将拥有以下内容,接受通过 action 方法传入的视图模型并显示用户和组:
@model MyProject.Models.UserGroup_ViewlModel
<table>
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Groups</th>
</tr>
</thead>
<tbody>
@foreach (var user in Model.Users)
{
<tr>
<td>@user.FirstName</td>
<td>@user.LastName</td>
<td>
<select>
@foreach (var group in Model.Groups)
{
<option>group.GroupName</option>
}
</select>
</td>
</tr>
}
</tbody>
</table>
上面的代码根本没有经过测试,视图中的 @ 符号可能存在一些问题。我可以看到你想要达到的目的。 table 中的用户列表,然后每行你想要一个你想要 select 的用户组的下拉列表,然后发送回控制器。这超出了 post 的范围,开始一个新的。我已经帮助您走上了正确的轨道,您只需要花更多时间阅读 ASP.NET MVC。
希望对您有所帮助:)