Мой код выглядит следующим образом:
@page
@model WebApplication1.Pages.Sessions.DetailsModel
@{
ViewData["Title"] = "Details";
@functions {
PlatformyProgramistyczneAPI.DbManager dbman = new PlatformyProgramistyczneAPI.DbManager();
public void OnPost()
{
dbman.ReplaceDriversDbBySession(Model.SessionDb.session_key);
Response.Redirect("/Drivers");
}
}
}
@Html.DisplayFor(model => model.SessionDb.country_name)
@Html.DisplayFor(model => model.SessionDb.circuit_short_name) @Html.DisplayFor(model => model.SessionDb.year)
Start date
@Html.DisplayFor(model => model.SessionDb.date_start)
End date
@Html.DisplayFor(model => model.SessionDb.date_end)
Show drivers
Я создал форму внизу, содержащую только кнопку отправки, в надежде, что смогу вызвать функцию OnPost(), но когда я нажимаю на нее, все данные, относящиеся к модель исчезает со страницы и ни одна операция в OnPost не выполняется. Когда я закомментирую каждую строку, связанную с моделью, она работает так, как задумано.
Почему я не могу использовать кнопки с моделями таким образом? Как правильно вызывать C# при нажатии кнопки?
Вот мой код DetailsModel:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using PlatformyProgramistyczneAPI.F1Api;
namespace WebApplication1.Pages.Sessions
{
public class DetailsModel : PageModel
{
private readonly PlatformyProgramistyczneAPI.F1Api.DriversDatabase _context;
public DetailsModel(PlatformyProgramistyczneAPI.F1Api.DriversDatabase context)
{
_context = context;
}
public SessionDb SessionDb { get; set; } = default!;
public async Task OnGetAsync(int? id)
{
if (id == null)
{
return NotFound();
}
var sessiondb = await _context.Sessions.FirstOrDefaultAsync(m => m.id == id);
if (sessiondb == null)
{
return NotFound();
}
else
{
SessionDb = sessiondb;
}
return Page();
}
public IActionResult OnPost(int session_key)
{
PlatformyProgramistyczneAPI.DbManager dbman = new PlatformyProgramistyczneAPI.DbManager();
dbman.ReplaceDriversDbBySession(session_key);
return Redirect("/Drivers");
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/782 ... razor-page
Мобильная версия