Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 0
  • 99

Tak jak w temacie, pytanie dotyczy MVC .NET

W jaki sposób przekazywać złożone obiekty typu własna klasa (np. z polami int A, string B, List<string> C)?

Dla przykładu przyjmijmy, że obiekt został wysłany z kontrolera do widoku, następnie w widoku zostały wyświetlone pola A i B, i wybrane C. Po wprowadzeniu zmian w kilku polach, chcemy przesłać obiekt do kontrolera aby tam wykonać dalsze operacje.

Jakie metody można zastosować w tym celu (pomijając użycie TempData)?

 

Radosław_Woźniak
  • Zapytał
  • @ Radosław_Woźniak | 29.10.2015
    • 5
    • 0
    • 1
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedź (1)

  • 3

Witaj Radku.

 

Aby odpowiedzieć na Twoje pytanie posłużę się przykładem:

1) Do modelu w projekcie dodamy klasę: Test.cs

namespace Demo1.Models
{
    public class Test
    {
        public int A { get; set; }

        public string B { get; set; }
    }
}

2) Dodamy kontroler: TestController.cs

3) Do kontrolera dodamy metodę AddElements(), której zadaniem będzie stworzenie pustego obiektu typu Test i przesłanie go do formularza:

 public ActionResult AddElements()
        {
            var model = new Test();
            return View(model);
        }

4) Utworzymy pusty widok AddElements.cshtml, w którym stworzymy formularz za pomocą którego będziemy wysyłać dane do kontrolera:

@model Demo1.Models.Test

@using (Html.BeginForm("AddElements", "Test", FormMethod.Post))
{
    @:A :@Html.TextBoxFor(m=>m.A)
    @:B :@Html.TextBoxFor(m => m.B)
@Html.DropDownList()
<input type="submit" value="Submit" />
}

5) Do kontrolera dodamy drugą metodę AddElements(), która za pomocą metody Post będzie odbierała i wyświetlała dane przesłane przez użytkownika:

        [HttpPost]
        public ActionResult AddElements(Test test)
        {
            var model = new Test();
            return Content("Przeslano A: " + test.A + " oraz B: " + test.B);
        }

 

 

  • Odpowiedział
  • @ | 12.11.2015
  • TRENER ALTKOM AKADEMII