Very often you have a list of items, and then a details-page showing just one item. In this example, we'll just use code to do this (so no visual query) - just so you understand the principle. This example even has the list & details view in the same file - but usually you don't want that - so check the next examples afterwards.
@inherits Custom.Hybrid.RazorTyped
@using AppCode.Data
@* check if we have a url-parameter called "id" with a value *@
@if (MyPage.Parameters.IsEmpty("id"))
{
var persons = App.Data.GetAll<Persons>();
<h3>List of Persons</h3>
<ul>
@foreach (var person in persons) {
<li>
<a href='@Link.To(parameters: MyPage.Parameters.Set("id", person.Id))'>
@person.FirstName @person.LastName
</a>
</li>
}
</ul>
}
else
{
// find the person with this Id using LINQ
int id = MyPage.Parameters.Int("id");
var person = App.Data.GetOne<Persons>(id); // persons.First(p => p.Id == id);
@person.Picture("Mugshot", settings: "Square", width: 50, imgClass: "float-left", imgAttributes: new {
style = "border-radius: 50%"
})
<h3>Details of @person.FirstName @person.LastName</h3>
<a href='@Link.To(parameters: MyPage.Parameters.Remove("id"))'>back to list</a>
}