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

[HttpPost] w ASP .NET Core

VPS Starter Arubacloud
0 głosów
211 wizyt
pytanie zadane 14 września 2020 w C# przez Szyszka Gaduła (3,510 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,510 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,510 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 119 wizyt
pytanie zadane 4 marca w C# przez drewienko Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 316 wizyt
pytanie zadane 6 lipca 2023 w C# przez reaktywny Nałogowiec (42,140 p.)
0 głosów
0 odpowiedzi 132 wizyt

92,960 zapytań

141,922 odpowiedzi

321,158 komentarzy

62,295 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...