Generated Views: Books/Index.cshtml (Cont.)

@model IEnumerable<BookStore1.Models.Book>
The @model IEnumerableIEnumerable<BookStore1.Models.Book> directive is used in Razor views to specify that the view expects a collection of objects of type BookStore1.Models.Book. This is commonly used when you want to display a list of items, such as in a table or a list format.

@Html.DisplayNameFor
It is a helper method used to retrieve and display the display name of a model property. It is particularly useful in scenarios like creating table headers or form labels, where you want to show a user-friendly name for a property.

model => model.Title
If you have a Model object passed to a view, you can access its properties, such as Title, directly in the Razor view by using Lambda expressions. The => operator is used to separate the lambda’s parameter list from its body.

foreach( var item in Model )
It is used to iterate over a collection of objects that is passed to the view as part of its model.

@Html.DisplayFor
It is a helper method used to display the value of a model property in a view. It automatically applies formatting and uses display templates if defined, making it a robust and reusable way to render data.

modelItem => item.Title
It is a common way to specify the Title property of each individual item within that collection.
C:\ASP.NET-workspace\BookStore1\Views\Books\Index.cshtml
 @model IEnumerable<BookStore1.Models.Book>

 @{ ViewData["Title"] = "Index"; }
 <h1>Index</h1>
 <p><a asp-action="Create">Create New</a></p>

 <table class="table">
   <thead>
     <tr>
       <th>@Html.DisplayNameFor( model => model.Title )</th>
       <th>@Html.DisplayNameFor( model => model.Genre )</th>
       <th>@Html.DisplayNameFor( model => model.Price )</th>
       <th>@Html.DisplayNameFor( model => model.PublishDate )</th>
       <th></th>
     </tr>
   </thead>
   
   <tbody>
     @foreach( var item in Model ) {
       <tr>
         <td>@Html.DisplayFor( modelItem => item.Title )</td>
         <td>@Html.DisplayFor( modelItem => item.Genre )</td>
         <td>@Html.DisplayFor( modelItem => item.Price )</td>
         <td>@Html.DisplayFor( modelItem => item.PublishDate )</td>
         <td>
           <a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
           <a asp-action="Details" asp-route-id="@item.Id">Details</a> |
           <a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
         </td>
       </tr>
     }
   </tbody>
 </table>





      “Do Transformers get a car or life insurance?”    
      — Russell Howard