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

ASP .NET Core przypisanie wartości <input text do zmiennej String

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

Witam. Jak wartość tego:

<input type="text">

(plik .cshtml)

mam przypisać do:

namespace WebApp1
{
    public class User
    {
        public User() {}
        
        private long Id { get; set; }
        private string Username { get; set; } // do tego
        private string Password { get; set; }
    }
}

W Spring Boocie jest to dość łatwe. A w NET Core? Jak tego dokonać?

1 odpowiedź

0 głosów
odpowiedź 15 września 2020 przez Adam Nowicki Obywatel (1,600 p.)

Hej,
przedewszystkim nie musisz tworzyć pustych konstruktorów w modelu, a same propy muszą być publiczne. Później skorzystaj z input asp-for. A więc:
1) Model:

public class User
{
    public string Username { get; set; }
    public string Password { get; set; }
}

2) Front:

<form asp-controller="Home" asp-action="Register" method="post">
    Username:  <input asp-for="Username" /> <br />
    Password: <input type="password" asp-for="Password" /><br />
    <button type="submit">Register</button>
</form>

3) Musisz jeszcze obsłużyć to w kontrolerze, tutaj HomeController:

public IActionResult Register(User user)
{
    return RedirectToAction("Index");
}

 

komentarz 15 września 2020 przez Szyszka Gaduła (3,490 p.)

Ok, mam coś takiego:

@page
@model object
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

@{
    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-controller="Home" asp-action="Register">
        <input asp-for="Username">->Nazwa użytkownika
        <br>
        <input type="password" asp-for="Password">->Hasło
        <input type="submit" value="Wyślij żądanie POST">
    </form>
</div>
</body>
</html>

A tak wygląda HomeController:

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

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

        [HttpPost]
        public void Register(User user)
        {
            HttpContext.Response.WriteAsync("sprawdzamczytopostwogoledziala");
        }
    }
}

Mam wrażenie, że ta moja metoda Register nic nie robi, (nawet po usunięciu acp-action dzieje sie to samo, co dzieje się kiedy on jest, czyli nic) w ogóle nigdy się nie wykonuje. Nawet kiedy wpisze tam Debug.Write() to nic się nie dzieje. Wiesz może dlaczego? A poza tym, to:

  Index.cshtml(19, 135): [CS1061] Element „object” nie zawiera definicji „Username” i nie odnaleziono dostępnej metody rozszerzenia „Username”, która przyjmuje pierwszy argument typu „object” (czy nie brakuje dyrektywy using lub odwołania do zestawu?).
  Index.cshtml(21, 84): [CS0411] Nie można wywnioskować argumentów typu dla metody „IModelExpressionProvider.CreateModelExpression<TModel, TValue>(ViewDataDictionary<TModel>, Expression<Func<TModel, TValue>>)” na podstawie użytkowania. Spróbuj jawnie określić argumenty typu.

 

komentarz 15 września 2020 przez Adam Nowicki Obywatel (1,600 p.)
Zapomniałem dopisać, że w widoku musisz jeszcze zdefiniować jaka klasa jest Twoim ViewModelem. Na samej górze dodaj: @model User
komentarz 16 września 2020 przez Szyszka Gaduła (3,490 p.)

Okej, dzięki wielkie. Powiesz mi jeszcze, czemu te Register() nigdy się nie wykonuje? :/

using Microsoft.AspNetCore.Mvc;

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

        [HttpPost]
        public IActionResult Register(User user)
        {
            return Redirect("/test");
        }
    }
}

 

Podobne pytania

+1 głos
1 odpowiedź 2,204 wizyt
pytanie zadane 28 stycznia 2018 w C# przez Kfiotek Początkujący (370 p.)
0 głosów
0 odpowiedzi 47 wizyt
pytanie zadane 4 marca w C# przez drewienko Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 205 wizyt
pytanie zadane 6 lipca 2023 w C# przez reaktywny Nałogowiec (40,990 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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!

...