Krzysiek Z. Programista ASP.NET
Temat: ASP.NET MVC3 przesyłanie danych z formularza DropDown list
Mam taki prosty formularz<form action="CreateMenu2/" method="post">
Wybierz kategorie:
@Html.DropDownList("categorieId",
new SelectList(ViewBag.Categories as System.Collections.IEnumerable,
"categorieId", "categorieName", Model.ToList()), new { @class = "dropdown" })
Wybierz menu:
@Html.DropDownList("menuId",
new SelectList(ViewBag.Menu as System.Collections.IEnumerable,
"menuId", "menuName", Model.ToList()), new { @class = "dropdown" })
<input type="submit" value="przejdz dalej" />
</form>
Chciałbym te dane z dropdown list wybrane przez uzytkownika przesłać do kontrolera, w jaki sposób można pobrac te dane i je przeslac?
Proszę o pomoc
z góry dziękuję
Dariusz
Jurojć
Architekt
systemów/Programist
a, Vobis S.A.
Temat: ASP.NET MVC3 przesyłanie danych z formularza DropDown list
Domyślam się, że w kontrolerze CreateMenu2 istnieje metoda Index (lub podobna) służąca do wygenerowania tego formularza (GET). Powinieneś napisać drugą, która obsłuży metodę POST, coś w stylu:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection formValues)
{
}
To podstawowa możliwość, dostęp do wartości pól uzyskujesz przez formValues["categorieId"]. Ale można jeszcze wykorzystać dodatkowe mechanizmy MVC (model binding) i użyć formy:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(string categorieId, string menuId)
{
}
Lub jeszcze bardziej "zautomatyzowanej" wersji
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(Klasa obiekt)
{
}
Gdzie Klasa będzie miała zdefiniowane pola categorieId i menuId.
Zwykle u mnie metoda taka:
- sprawdza poprawność wprowadzonych danych,
- jeśli są niepoprawne - wyświetla informacje o błędach,
- jeśli są poprawne - zapuisuje do bazy i robi redirect na stronę informacyjną zgodnie z wzorcem Post/Redirect/Get .
Maciej
Rychter
Projektant/programis
ta .NET
Temat: ASP.NET MVC3 przesyłanie danych z formularza DropDown list
Yo,ja proponuję podejść do problemu następująco (jeżeli oczywiście chcesz dogłębnie zrozumieć o co chodzi z tym MVC, a nie robisz jakiś bug-fixing z doskoku):
1. zaopatrzyć się w porządną angielskojęzyczną książkę o MVC 3
2. przeczytać ją od dechy do dechy chociaż raz.
3. teraz na zmianę czytać książkę + internety i kodować.
Ogólnie widzę, że u Ciebie to dopiero początek drogi. Nie jestem super doświadczony w MVC 3, ale ja zaczął bym od zrobienia sobie odpowiedniego ViewModelu czyli klaski która będzie odpowiadała polom formularza (np. imie, nazwisko, itp). Właściwości w tej klasie oczywiście odpowiednio otagowujesz korzystając z DataAnnotations (bez wnikania możesz zmusić endżin do tego aby pole "imie" w klasie formularza było na stronie wyświetlane pod nazwą przykładowo "Give me your fucking name". ViewModel oczywiście może wystawiać także słowniki do dropdownów w postaci propert. Potem robisz sobie przynajmniej 2 akcje w kontrolerze (jedną, która pokazuje formularz, a drugą która przyjmuje jako parametr metody właśnie instancję tego ViewModela). Potem leziesz mychą do drzewka solucji i w odpowiednim miejscu w katalogu Views klikasz prawym dodaj widok, pojawi się popup i tam wybierasz, aby stworzył Ci widok na podstawie wybranego ViewModela. Studio wtedy wygeneruje Ci wtedy piękny kodzik formatki gotowy do użycia. Easy, nie?
MVC3 to dobro i piękno, ale żeby z tego dobrze korzystać radzę Ci poczytać conieco bo polegniesz na najprostszych problemach.
Jeżeli chcesz zobaczyć mój przykładowy app z MVC 3 zapraszam na http://niesiedzpodblokiem.pl
---
Pozdrawiam,
MaćkoMaciej Rychter edytował(a) ten post dnia 19.02.12 o godzinie 22:23
Tomasz M. pan tom buduje dom
Temat: ASP.NET MVC3 przesyłanie danych z formularza DropDown list
Maciej Rychter:
Yo,
ja proponuję podejść do problemu następująco...
Yo,
Proponuję spojrzeć na datę posta. Dziś siępewnie kolega z tego śmieje ;]
Maciej
Rychter
Projektant/programis
ta .NET
Temat: ASP.NET MVC3 przesyłanie danych z formularza DropDown list
Ha,faktycznie.
Ale się wczułem w rolę.
Może nie cała para poszła jednak w gwizdek ;)
Krzysiek Z. Programista ASP.NET
Temat: ASP.NET MVC3 przesyłanie danych z formularza DropDown list
dzięki za odpowiedźproblem faktycznie dawno rozwiązany, poczatki z mvc (:
