Я работаю над проектом Razor Page, представляющим модели Lists
и Records
:
public class List
{
public int ID { get; set; }
[StringLength(25, MinimumLength = 3, ErrorMessage = "Title should be in range between 3 and 25")]
[Display(Name = "Title")]
public string Caption { get; set; }
public string UserId { get; set; }
public User User { get; set; }
public ICollection<Record> Records { get; set; }
}
public class Record
{
public int ID { get; set; }
[StringLength(25, MinimumLength = 3, ErrorMessage = "Word should be in range between 3 and 25")]
[Display(Name = "Title")]
public string Word { get; set; }
[StringLength(30, MinimumLength = 3, ErrorMessage = "Translation should be in range between 3 and 30")]
public string Translation { get; set; }
public int ListId { get; set; }
public List List { get; set; }
}
Запись является дочерним элементом списка .Один ко многим в БД: ![enter image description here](https://i.stack.imgur.com/OrBi8.png)
Я создал правильный URL при открытии списка Records
из Lists
: ![enter image description here](https://i.stack.imgur.com/dB8RT.png)
Теперь я хочу создать аналогичный URL для одного Record
, который выглядит следующим образом:
Однако для этого мне нужно правильно передать более одного параметра: ListId
и RecordId
по csgtml
файлу.Примерно так:
<a asp-page="./Details" asp-route-id="@item.ID,@item.ListId">Details</a>
и подпись метода OnGetAsync
в Записи / Детали (страница, на которой я хочу перейти) должны выглядеть так:
public async Task<IActionResult> OnGetAsync(int? id, int? listId) {...}
Определение страницы вRecords/Details.cshtml
должно выглядеть примерно так:
@page "/Lists/{listId}/Records/{id}/Details/"
Но это не работает!
Если я определю @page Records/Details.cshtml
следующим образом:
@page "/Lists/{id}/Records/Details/"
Метод
public async Task<IActionResult> OnGetAsync(int? id, int? listId)
доходит до точки останова, однако оба параметра имеют значение NULL и URL выглядит следующим образом: ![enter image description here](https://i.stack.imgur.com/pcPps.png)