К сожалению, на этой адресной странице ничего не отображается, когда я щелкаю ссылку с помощью 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".

Другие вопросы по тегам