What is the best practice in injecting dependencies inside Razor view?
We can use Controller as a service and inject that or inject Service
I don't know what is the cons and pros of these injecting ways.
- Controller:
in Startup.cs
public void ConfigureServices(IServiceCollection services)
{
.
.
.
services.AddControllersWithViews().AddControllersAsServices().AddRazorRuntimeCompilation();
}
then inside home.cshtml
@inject CourseController _courseControler
.
.
.
<select asp-for="CategoryID" class="form-control round">
@foreach (var item in await _courseControler.GetAllCourceCategory()){
<option value="@item.ID">@item.Description</option>
}
</select>
- Service:
in Startup.cs
public void ConfigureServices(IServiceCollection services)
{
.
.
.
services.AddTransient<ICourseService, CourseService>();
}
then inside home.cshtml
@inject ICourseService _courseService
.
.
.
<select asp-for="CategoryID" class="form-control round">
@foreach (var item in await _courseService.GetAllCourceCategory()){
<option value="@item.ID">@item.Description</option>
}
</select>