Well you start off with understanding speration of concerns SoC.
https://en.wikipedia.org/wiki/Separation_of_concerns
https://learn.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/architectural-principles
https://www.c-sharpcorner.com/UploadFile/56fb14/understanding-separation-of-concern-and-Asp-Net-mvc/
You should understand the models used in MVC.
https://deviq.com/terms/kinds-of-models
You should understand the viewmodel.
https://www.dotnettricks.com/learn/mvc/understanding-viewmodel-in-aspnet-mvc
Layered or N-Tier...
https://learn.microsoft.com/en-us/previous-versions/msp-n-p/ee658117(v=pandp.10)
DTO(s) travel between layers or tiers -- not the persistence model.
https://www.codeproject.com/Articles/1050468/Data-Transfer-Object-Design-Pattern-in-Csharp
You should understand what is being discussed.
<copied>
An MVC model contains all of your application logic that is not contained in a view or a controller. The model should contain all of your application business logic, validation logic, and database access logic.
A view should contain only logic related to generating the user interface. A controller should only contain the bare minimum of logic required to return the right view or redirect the user to another action (flow control). Everything else should be contained in the model.
In general, you should strive for fat models and skinny controllers. Your controller methods should contain only a few lines of code. If a controller action gets too fat, then you should consider moving the logic out to a new class in the Models folder.
<end>
In the Models folder in the example solution out on Github, you see two types of classes suffixed with DM (Domain Model( and VM (ViewModel). And everything presented has been implemented in the solution.
https://github.com/darnold924/PublishingCompany
I am also using the DAO pattern in the DAL.
You should look into Razor Pages and Blazor both use the ASP.NET MVC pipeline.
HTH
.