【发布时间】:2025-12-15 23:15:01
【问题描述】:
我将尝试解释我正在尝试做的事情 - 目前我为我正在使用的每个表格都有一个模型,并且一个 ViewModel 只包含表格内容的一部分。
我还向 ModelView 添加了一个或两个额外的属性,它来自另一个表。我的问题是,如何将值(我有一个可以为我带来该属性的函数)分配给 viewModel 对象?
视图模型:
public class StreetViewModel
{
public Int64 Id { get; set; }
public Int64 CityId { get; set; }
public string Name { get; set; }
public string CityName { get; set; } // THIS IS THE EXTRA PROPERTY
}
我的控制器动作来分配对象:
public IActionResult GetStreetByName(string streetName)
{
var results = _repository.GetStreetByName(streetName); //Return a list of object of type Street
return Ok(Mapper.Map<IEnumerable<StreetViewModel>>(results)); // convert Street object to STREETVIEWMODEL object and return it.
}
我的GetStreetByName 方法:
public IEnumerable<Street> GetStreetByName(string streetName)
{
return _context.Street.Where(t => t.Name.Contains(streetName)).ToList();
}
此方法将为我返回一个对象类型 Street 的列表,在我拥有的每个 CityId 中,我还想选择仅出现在 City 表中的 CityName。
我还有一个通过 ID 获取城市对象的方法:
public City GetCityNameById(int cityId)
{
return _context.City.Where(t => t.Id == cityId).FirstOrDefault();
}
在哪里以及如何为 Street 的每条记录分配一个 cityName ?
【问题讨论】:
-
你在使用 AutoMapper 吗?
-
是的,我是@FelipeOriani
-
您应该使用 ProjectTo,而不是 Map。 docs.
标签: c# sql-server asp.net-mvc database