C# 在ASP.NET MVC中传递列表值以查看模型类变量

C# 在ASP.NET MVC中传递列表值以查看模型类变量,c#,asp.net-mvc,repository-pattern,asp.net-mvc-viewmodel,C#,Asp.net Mvc,Repository Pattern,Asp.net Mvc Viewmodel,我需要将记录列表传递给视图模型中的类变量(用户和组),但我无法看到视图模型对象(_UserAndGroupModel)识别其类对象,我不确定这里缺少什么 @foreach (var item in Model) {.... 视图模型 每个类用户和组都有自己的变量和集合项 @foreach (var item in Model) {.... 在下面的代码行中,我需要在视图模型中传递list和assign给user对象和groups对象 public parti

我需要将记录列表传递给视图模型中的类变量(用户和组),但我无法看到视图模型对象(_UserAndGroupModel)识别其类对象,我不确定这里缺少什么

    @foreach (var item in Model)
    {....
视图模型 每个类用户和组都有自己的变量和集合项

    @foreach (var item in Model)
    {....
在下面的代码行中,我需要在视图模型中传递list和assign给user对象和groups对象

 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   ??????????????
        }
    }
}
    @foreach (var item in Model)
    {....
看法
在视图中,当我执行model=>model时,我看不到ViewModel类变量。??

您的错误源于此行

    @foreach (var item in Model)
    {....
List<UserGroup_ViewModel> _UserAndGroupModel = new List<UserGroup_ViewModel>();

例如,将起作用。

您的错误源于此行

    @foreach (var item in Model)
    {....
List<UserGroup_ViewModel> _UserAndGroupModel = new List<UserGroup_ViewModel>();

这是答案,非常感谢Ammar的帮助

    @foreach (var item in Model)
    {....
public class UserGroup_ViewModel
{
    public List<User> Users { get; set; }
    public List<Group> Groups { get; set; }

}

这是答案,非常感谢阿马尔的帮助

    @foreach (var item in Model)
    {....
public class UserGroup_ViewModel
{
    public List<User> Users { get; set; }
    public List<Group> Groups { get; set; }

}

我会做得有点不同。您希望将单个视图模型返回到由用户列表和组列表组成的视图(如果我错了,请更正)。我会在视图模型的构造函数中将列表初始化为空(不包含任何项):

    @foreach (var item in Model)
    {....
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; }
}
只需确保
User\u Repository.GetAll()
Group\u Repository.GetAll()
的返回类型为
List
List

    @foreach (var item in Model)
    {....
然后您的控制器可能看起来像这样:

    @foreach (var item in Model)
    {....
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方法传入的视图模型并显示用户和组:

    @foreach (var item in Model)
    {....
@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>
@model MyProject.Models.UserGroup\u ViewlModel
名字
姓
组
@foreach(Model.Users中的var用户)
{
@user.FirstName
@user.LastName
@foreach(Model.Groups中的var组)
{
group.GroupName
}
}
上面的代码根本没有经过测试,视图中的@符号可能存在一些问题。我知道你想说什么。表中的用户列表,然后每行显示要选择的用户组的下拉列表,然后发送回控制器。这超出了本文的范围,请重新开始。我已经帮助您走上了正确的道路,您只需要花更多的时间阅读ASP.NET MVC

    @foreach (var item in Model)
    {....

我希望这有帮助:)

我会做一些不同的事情。您希望将单个视图模型返回到由用户列表和组列表组成的视图(如果我错了,请更正)。我会在视图模型的构造函数中将列表初始化为空(不包含任何项):

    @foreach (var item in Model)
    {....
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; }
}
只需确保
User\u Repository.GetAll()
Group\u Repository.GetAll()
的返回类型为
List
List

    @foreach (var item in Model)
    {....
然后您的控制器可能看起来像这样:

    @foreach (var item in Model)
    {....
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方法传入的视图模型并显示用户和组:

    @foreach (var item in Model)
    {....
@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>
@model MyProject.Models.UserGroup\u ViewlModel
名字
姓
组
@foreach(Model.Users中的var用户)
{
@user.FirstName
@user.LastName
@foreach(Model.Groups中的var组)
{
group.GroupName
}
}
上面的代码根本没有经过测试,视图中的@符号可能存在一些问题。我知道你想说什么。表中的用户列表,然后每行显示要选择的用户组的下拉列表,然后发送回控制器。这超出了本文的范围,请重新开始。我已经帮助您走上了正确的道路,您只需要花更多的时间阅读ASP.NET MVC

    @foreach (var item in Model)
    {....


我希望这有帮助:)

那么我如何在GetUserAndGroups()方法中分配列表???@toxic,方法是像我上面的建议那样更改您的ViewModel。然后它应该停止给你一个错误。如果仍然没有,请告诉我。如果仍然有错误,我已经上传了问题中错误的屏幕截图,然后我如何在GetUserAndGroups()方法中分配列表???@toxic,方法是像我上面的建议那样更改您的ViewModel。然后它应该停止给你一个错误。如果仍然没有,请告诉我是否仍然有错误,我在问题中上传了错误的屏幕截图,这是正确的,此外,我的GetAll()方法正在返回IQueryable,并且我在从ViewModel填充视图中的模型时遇到了另一个问题您的问题是什么?解释您试图执行的操作。请告诉我我上载屏幕快照的分钟数。我无法从视图中的viewmodel访问用户和组。我的视图是强类型视图我在上面的问题中更新了控制器和视图代码。这是正确的,此外,我的GetAll()方法正在返回IQueryable,我在从ViewModel填充视图中的模型时遇到了另一个问题您的问题是什么?解释您试图执行的操作。请告诉我我上载屏幕快照的分钟数。我无法从视图中的viewmodel访问用户和组。我的视图是强类型视图我在上面的问题中更新了控制器和视图代码如果您知道
\u userServices.GetUserAndGroups()
返回一个
UserGroup\u ViewModel
,然后使用它。如果您知道
\u userServices.GetUserAndGroups(),请不要使用
var
返回一个
UserGroup\u ViewModel    @foreach (var item in Model)
    {....