ASP.NET Core MVC вызывает функцию с помощью кнопки на странице бритвыC#

Место общения программистов C#
Ответить
Гость
 ASP.NET Core MVC вызывает функцию с помощью кнопки на странице бритвы

Сообщение Гость »

У меня есть страница .cshtml, на которой отображается некоторая информация о гоночной сессии. Внизу я хочу добавить кнопку, которая вызывает функцию получения драйверов этого сеанса в базу данных и перенаправляет меня на страницу, отображающую их в списке.
Мой код выглядит следующим образом:
@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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»