Я пытаюсь понять, как правильно передать параметр и, что более важно, вернуть одно или несколько значений.
В основном методе у меня есть:
public IActionResult FinVD()
{
var user = from d in _context.Roles
join userRole in _context.UserRoles on d.Id equals userRole.RoleId
join usuario in _context.Users on userRole.UserId equals usuario.Id
where usuario.UserName == User.Identity.Name
select d;
var cargo = user.FirstOrDefault();
var cargodesc = cargo.Name;
ListaTienda(cargodesc);
//...More code
FinanzaDIndexData ventadiaria = new FinanzaDIndexData()
{
MedioPagos = medio_pago,
hechosf_periodo = fecha,
//Here lies the problem. Is not initialized in the context if the code stays like this.
HechosFinanzaL = ListaHechosFinanza,
};
return View(ventadiaria);
}
Передача этого параметраto ListaTienda сделает следующее:
- Создание ViewBag
Создание списка
private void ListaTienda(string cargodesc)
{
if (cargodesc == "Jefe")
{
List<Tienda> ListaTienda = new List<Tienda>();
ListaTienda = _context.Stores.Where(j => j.Districts.Provincias.provincia_jefe == User.Identity.Name && j.tienda_vigencia_reg == 1).OrderBy(j => j.tienda_nombre).ToList();
ListaTienda.Insert(0, new Tienda { tienda_id = 0, tienda_nombre = "-- Seleccione Tienda --" });
ViewBag.ListaTienda = ListaTienda;
List<HechosFinanza> ListaHechosFinanza = new List<HechosFinanza>();
ListaHechosFinanza = _context.HechosFinanza.Include(f => f.Devices).ThenInclude(f => f.Machines).ThenInclude(f => f.Stores).ThenInclude(f => f.Districts).ThenInclude(f => f.Provincias)
.Where(f => f.finanzas_id == 1 &&
f.Devices.Machines.Stores.Districts.Provincias.provincia_jefe == User.Identity.Name)
.OrderBy(f => f.Devices.Machines.Stores.tienda_nombre).ToList();
//...more code
}
}
проблема:
Когда я возвращаюсь к основному методу, у меня есть Список, ожидающий заполнения с результатом ListaHechosFinanza
, но я получаю сообщение:
Имя 'ListaHechosFinanza' не существует в реальном контексте
Должен ли я объявить пустой List<HechosFinanza>
в методе main, передать его в качестве параметра и позволить емубыть изменены с помощью ref
?или без так как есть список?Как это?:
public IActionResult FinVD()
{
var user = from d in _context.Roles
join userRole in _context.UserRoles on d.Id equals userRole.RoleId
join usuario in _context.Users on userRole.UserId equals usuario.Id
where usuario.UserName == User.Identity.Name
select d;
var cargo = user.FirstOrDefault();
var cargodesc = cargo.Name;
List<HechosFinanza> ListaHechosFinanza = new List<HechosFinanza>();
ListaTienda(cargodesc, ListaHechosFinanza);
//... more code
FinanzaDIndexData ventadiaria = new FinanzaDIndexData()
{
MedioPagos = medio_pago,
hechosf_periodo = fecha,
HechosFinanzaL = ListaHechosFinanza,
};
return View(ventadiaria);
}
Часть 2:
private void ListaTienda(string cargodesc, List<HechosFinanza> ListaHechosFinanza)
{
if (cargodesc == "Jefe")
{
List<Tienda> ListaTienda = new List<Tienda>();
ListaTienda = _context.Stores.Where(j => j.Districts.Provincias.provincia_jefe == User.Identity.Name && j.tienda_vigencia_reg == 1).OrderBy(j => j.tienda_nombre).ToList();
ListaTienda.Insert(0, new Tienda { tienda_id = 0, tienda_nombre = "-- Seleccione Tienda --" });
ViewBag.ListaTienda = ListaTienda;
//List<HechosFinanza> ListaHechosFinanza = new List<HechosFinanza>();
ListaHechosFinanza = _context.HechosFinanza.Include(f => f.Devices).ThenInclude(f => f.Machines).ThenInclude(f => f.Stores).ThenInclude(f => f.Districts).ThenInclude(f => f.Provincias)
.Where(f => f.finanzas_id == 1 &&
f.Devices.Machines.Stores.Districts.Provincias.provincia_jefe == User.Identity.Name)
.OrderBy(f => f.Devices.Machines.Stores.tienda_nombre).ToList();
}