• 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

VPS Starter Arubacloud
0 głosów
457 wizyt
pytanie zadane 15 września 2020 w C# przez Szyszka Gaduła (3,510 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,510 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,510 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,225 wizyt
pytanie zadane 28 stycznia 2018 w C# przez Kfiotek Początkujący (370 p.)
0 głosów
0 odpowiedzi 89 wizyt
pytanie zadane 4 marca w C# przez drewienko Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 283 wizyt
pytanie zadane 6 lipca 2023 w C# przez reaktywny Nałogowiec (41,920 p.)

92,840 zapytań

141,781 odpowiedzi

320,856 komentarzy

62,172 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

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!

...