c# asp.net mvc - zmienna z kontrolera w modelu, zwraca null

0

Witam,
Mam taki problem iż nie mogę użyć w modelu zmiennych z kontrolera - zwraca get jest null.

Kod skróciłem i wygląda mniej więcej tak (chodzi mi przede wszystkim o to by dowiedzieć się jak użyć zmienne name i password w modelu):

Controller:
[HttpPost]
        public ActionResult Index(KontoModel m,string name, string password,)
        {
            m.Name = name;
            m.Password = password;

            // m.Name = "user"; <-- tak też zwraca null w modelu
            // m.Password = "password"; <-- tak też zwraca null w modelu
			
			// return Content($"Dane: {name}, {password}");	 // Tutaj wszystko spoko, wyświetla co wpisałem w pola
                           return View(...);
		}

Model:		
namespace Login.Models
{
    public class KontoModel
    {
        public string Name { get; set ; }
        public string Password { get; set; }

        // public string Name = "user";  <-- w ten sposób działa
        // public string Password = "password";  <-- w ten sposób działa
		 
		 public void logowanie()
        {
		...
                // reszta kodu która działa
		client.Authenticate(Name, Password); // Dostaję: „Value cannot be null.”
    }
    
}

View Index:
<div>
 <form method="POST">
        <input type="text" class="form-control" id="name" placeholder="Imię" name="name" autocomplete="off" required /><br>
        <input type="text" class="form-control" id="password" placeholder="Hasło" name="password" autocomplete="off" required /><br>
		<input type="submit" value="Zaloguj" /></div>
 </form>
</div>

0

A co Ty próbujesz osiągnąć? Czemu masz w kontrolerze zarówno proste wartości jak i obiekt? Kiedy wołasz metodę logowanie? Czemu ona w ogóle znajduje się w viewmodelu?

0

Metodę wywołuje i zwraca mi null. Moje pytanie jest dlaczego tak się dzieje, albo po prostu, jak użyć zmiennej z kontrolera w modelu?

0

A czemu zrobiłeś coś takiego:

   public ActionResult Index(KontoModel m,string name, string password,)
        {
            m.Name = name;
            m.Password = password;

Zamiast:

public ActionResult Index(KontoModel m)

?

Prawodpodobnie dostajesz prawidłowo zbindowany obiekt KontoModel, ale sam go nadpisujesz potem nullami, które są w name i password. I po co tak?

0

public ActionResult Index(KontoModel m,string name, string password)
string name, string password - to są wartości, które wpisałem w formularzu.

return Content($"Dane: {name}, {password}"); wyświetla to co wpisałem.

Jak robię:
public ActionResult Index(KontoModel m)

m.Name = "user";
m.Password = "password";

To w:
namespace Login.Models
{
public class KontoModel
{
public string Name { get; set ; } - powinno wyświetlić user, a jest wartość null
public string Password { get; set; }

0

Czyli przypisujesz wartość do obiektu i jej tam nie ma? Magia po prostu. Albo sprawdzasz inny obiekt. W którym momencie masz tam null?

A jak zrobisz public ActionResult Index(KontoModel m) to zarówno Name jak i Password powinieneś mieć zbindowane z tym, co wpisałeś, więc już żadnych innych parametrów ta metoda nie potrzebuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1