• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[HttpPost] w ASP .NET Core

Object Storage Arubacloud
0 głosów
171 wizyt
pytanie zadane 14 września 2020 w C# przez Szyszka Gaduła (3,490 p.)

Witam. Mam tak wygląda plik Startup.cs:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace WebApp1
{
    public class Startup
    {
        // 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, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapRazorPages();
            });
        }
    }
}

A tak HomeController.cs:

using Microsoft.AspNetCore.Mvc;

namespace WebApp1
{
    public class HomeController : Controller
    {
        [HttpGet]
        public IActionResult Get()
        {
            return View("Index");
        }

        [HttpPost]
        public IActionResult Post()
        {
            return View("Index");
        }
    }
}

No i jeszcze tak Index.cshtml:

@page
@model object

@{
    Layout = null;
}

<!DOCTYPE html>

<html lang="pl">
<head>
    <title>STRONA GŁÓWNA</title>
</head>
<body>
<div>
    Witaj na stronie głównej!
    <form method="post">
    <input type="submit" value="Wyślij żądanie POST">
    </form>
</div>
</body>
</html>

Strona ładuje się pod localhost:5001/, jednak gdy wcisnę przycisk wysyłający żądanie post, to otrzymuje HTTP ERROR 400. Dlaczego?

1 odpowiedź

0 głosów
odpowiedź 14 września 2020 przez Snejki Stary wyjadacz (14,520 p.)
W obrębie całej aplikacji, a nawet pojedynczego kontrolera możesz mieć wiele akcji typu Post. Musisz więc w swoim formularzu wskazać, na którą akcję chcesz wysłać żądanie Post. Można tego dokonać np. przy użyciu tagu asp-action="nazwa-akcji" w formularzu
komentarz 14 września 2020 przez Szyszka Gaduła (3,490 p.)

Nie wiem, czy dokładnie o to chodziło. Zrobiłem coś takiego:

@page
@model object

@{
    Layout = null;
}

<!DOCTYPE html>

<html lang="pl">
<head>
    <title>STRONA GŁÓWNA</title>
</head>
<body>
<div>
    Witaj na stronie głównej!
    <form method="post" asp-action="/">
        <input type="submit" value="Wyślij żądanie POST">
    </form>
</div>
</body>
</html>

Efekt nadal ten sam, HTTP ERROR 400

komentarz 14 września 2020 przez Snejki Stary wyjadacz (14,520 p.)
twoja akcja nazywa się Post, więc taką nazwę wprowadzasz do tego atrybutu.
komentarz 15 września 2020 przez Szyszka Gaduła (3,490 p.)
<form method="post" asp-action="Post">
        <input type="submit" value="Wyślij żądanie POST">
</form>

nadal to samo :/

Edit:

Dodałem:

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

i wszystko działa. Dzięki.

Podobne pytania

0 głosów
0 odpowiedzi 45 wizyt
pytanie zadane 4 marca w C# przez drewienko Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 199 wizyt
pytanie zadane 6 lipca 2023 w C# przez reaktywny Nałogowiec (40,970 p.)
0 głosów
0 odpowiedzi 113 wizyt

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...