Передача идентификатора "владелец" в create-view для связанной модели - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть эта модель для Employees:

public class EmployeeViewModel
{
    public int Id { get; set; }
    // some more properties
    public List<EmployeeReservationViewModel> Reservations { get; set; }
}

... и эта для EmployeeReservations:

public class EmployeeReservationViewModel
{
    public int Id { get; set; }
    public int EmployeeId { get; set; }
    // some more properties
    public EmployeeViewModel Employee { get; set; }
}

В Employees Details -для просмотра, у меня есть ссылка для добавления нового EmployeeReservation, например:

<a asp-controller="EmployeeReservations" 
   asp-action="Create">Add reservation</a>

Как передать EmployeeId в EmployeeReservations/Create -View?

НаВ тот момент, когда я использую переменную сеанса, например, в методе Details Employees в контроллере:

HttpContext.Session.SetInt32("EmployeeId", employee.Id);

... и затем извлекаю его в методе POST Create вEmployeeReservations -контроллер:

employeeReservation.EmployeeId = HttpContext.Session.GetInt32("EmployeeId").Value;
db.Add(employeeReservation);
await db.SaveChangesAsync();

У меня такое ощущение, что мой метод не оптимален.Что делать, если время сеанса истекло?Есть ли другой, более надежный способ сделать это?

1 Ответ

0 голосов
/ 23 ноября 2018

Вы можете использовать asp-route-id

В представлении

<a asp-controller="EmployeeReservations" 
   asp-action="Create" asp-route-id="10">Add reservation</a>

В контроллере добавить id в качестве параметра для действия создания

Public IActionResult Create(string id){
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...