К сожалению, на этой адресной странице ничего не отображается, когда я щелкаю ссылку с помощью C# Blazor
Я пытаюсь выучить Blazor после урока на YouTube. Я хочу отобразить список студентов, используя приведенный ниже код. Когда я щелкнул ссылку студента, у меня появилось сообщение "К сожалению, по этому адресу ничего нет". пожалуйста, может ли кто-нибудь сказать мне, где я ошибаюсь
NavBar
<li class="nav-item px-3">
<NavLink class="nav-link" href="Pages/Student">
<span class="oi oi-list-rich" aria-hidden="true"></span> Student data
</NavLink>
</li>
Студенческий контролер
public class StudentController : ControllerBase
{
private readonly RazorExampleContext _context;
public StudentController(RazorExampleContext context)
{
_context = context;
}
// GET: api/Student
[HttpGet]
public async Task<ActionResult<List<Student>>> GetStudent()
{
return await _context.Student.ToListAsync();
}
}
RaZor Page
@page "/Student"
@inject HttpClient Http
// Display student list
<table class="table">
<thead>
<tr>
<th></th>
<th>Student Id</th>
<th>Student Name</th>
</tr>
</thead>
<tbody>
@foreach (var student in students)
{
<tr>
<td>
<a class="btn btn-success" href="Student/">Edit</a>
<button class="btn btn-danger">Delete</button>
</td>
<td>student.Id</td>
<td>student.StudentName</td>
</tr>
}
</tbody>
</table>
}
@code {
Student[] students { get; set; }
protected override async Task OnInitializedAsync()
{
await LoadStudent();
}
async Task LoadStudent()
{
students = await Http.GetJsonAsync<Student[]>("api/Student");
}
}
Startup.cs
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddHttpClient();
services.AddSingleton<WeatherForecastService>();
services.AddSingleton<Student>();
}
1 ответ
Эта ошибка обычно возникает, когда маршрутизатор не может найти предоставленный ему URL-адрес. Изменить это:<NavLink class="nav-link" href="Pages/Student">
к <NavLink class="nav-link" href="student">
Не имеет отношения к ответу:
Почему ты делаешь это:
services.AddSingleton<Student>();
Студент - это ваша модель, а не услуга, которую вы собираетесь внедрить в свои компонентыВы должны убедиться, что массив Student заполнен данными, прежде чем использовать его в цикле foreach, в противном случае срабатывает исключение нулевой ссылки.
По соглашению шаблон маршрута должен быть @page "/student", а не @page "/Student".