【问题标题】:Cast List<ViewModel> to ViewModel?将 List<ViewModel> 转换为 ViewModel?
【发布时间】:2020-11-25 21:45:04
【问题描述】:

我想先说我是使用模型的新手。如果这个问题有简单的答案,请见谅。

我一直在努力将列出的视图模型恢复为视图模型。为了提供一些背景知识,我将一个搜索表单传递给来自我的 ActionResult 的模型,然后过滤掉结果。

[控制器]

    public ActionResult GetFilters(MembershipVM model)
    {
        var uDataList = new List<MembershipVM>();        
        
        model = _service.GetFilters(model);

        return View("SendEmail", model);
     }

[服务]

    public List<MembershipVM> GetFilters(MembershipVM model)
    {               
        var query = _context.Members.Where(f => f.Deleted == 0).AsQueryable();
        var members = _context.Members.ToList();

        query = query.Where(f => agencyTypes.Contains(f.AgencyType));
        
        var uDataList = new List<MembershipVM>();


        foreach (var member in members)
        {
            var uData = new MembershipVM();

            uData.Email = member.Email;
            uData.AgencyType = member.AgencyType;
            ...
            uDataList.Add(uData);
        }

        return uDataList;
    }
    

如何将列表从“_service.GetFilters”转换为 MembershipVM?有没有更好/更简单的方法来从“_service.GetFilters”服务中获取作为对象的结果?

提前非常感谢!

菊花

【问题讨论】:

    标签: asp.net-mvc model-view-controller model controller viewmodel


    【解决方案1】:

    我不确定您要在这里做什么。首先,您从以下代码中获取过滤器的结果:

    model = _service.GetFilters(model);
    

    你的方法的定义是这样的:

    public List<MembershipVM> GetFilters(MembershipVM model)
    

    所以您会认为这是一个结果列表。简而言之,就是结果的集合。

    现在,如果您只想将其作为一个实体传递给您的 ActionResult,那么获取其中一个结果就可以了:

    return View("SendEmail", model.Take(1).SingleOrDefault());
    

    但是为什么你只需要传递一个实体呢?但这应该符合您当前的要求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-06
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 2015-03-29
      相关资源
      最近更新 更多