C# / Asp.Net MVC 3 / Html.DropDownListFor() - problem

Pozdrav!
Radim na dodavanju nove podKategorije u bazu…
U View-u mi je txtBox za upisivanje naziva i trebal bi biti dropDown popunjen sa listom kategorija - dakle, kad bi se kliknuo btn_Submit onda bi mi se dodala podKategorija u bazu koja bi pripadala kategoriji koja je odabrana u dropDown-u.

U bazi se nalazi tablica “Kategorija” sa atributima:

  • Category_ID

  • SubCateg_ID

  • Name

  • baza mi je zasebna (ms sql server managment studio), nije unutar samog VS kao na velikoj vecini primjera na netu

Ovo mi je dio kod-a iz View-a:
public ActionResult Add_SubCateg()
{
List lst = new List();
lst = KategorijaDAL.MainKateg_Select_All_Category(); /* u toj listi se nalazi category_ID i Name */
List lst2 = new List();
foreach(var item in lst)
{
lst2.Add(new SelectListItem
{
Value=item.Category_ID.ToString(),
Text=item.Name
});
}
ViewData[“Lista”] = new SelectList(lst2, “Value”, “Text”);
return View();
}

I sad, napravio sam View i ovako mi odprilike ide kod:

..... ....
Naziv: @Html.TextBoxFor(x => x.Name)Odaberi kateogriju: [b]@Html.DropDownListFor(ViewData["Lista"]) // I tu sam zapel.[/b] Pokusal sam i slijedece: @Html.DropDownListFor("Lista", ViewData["Lista"] as SelectList, "--Select One--") @Html.DropDownList("Lista", (SelectList)ViewData["Lista"])

Stavil sam si breakPoint-ove da provjerim da li je ViewData u controlleru pun - da,
ali na View-u nikako da mi prikaze, kaj nije u redu?

U ViewData spremi lst2.

U View-u napravi nesto ovako:
@Html.DropDownList(“Lista”, (List)ViewData[“Lista”])

Ali, to nije sve! :slight_smile:

Mozemo se okoristiti konvencijama i dinamickim tipovima ugradjenim u mvc 3 / c# 4!
znaci, umjesto ViewData[“Lista”] = … napises ovako nesto:

ViewBag.Lista = lst2; // ViewBag je dynamic tip, znaci zakacis property koji god zelis.

u view-u DropDown zna sam procitati listu iz ViewBaga (u pozadini je to obicni ViewData)

@Html.DropDownList(“Lista”)

Ovaj “Lista” govori dropdown-u da ode u ViewBag (ViewData[“Lista”]) i trazi objekt, i pokusa ga cast-at u List. Vrlo je mudar taj DropDown :wink:

Odmah kako sam otvorio tu temu sam dokucio rijesenje i to mi se sad vec 2x dogodilo a ne mogu obrisati temu (-.-); a nije da se nisam potrudil prije samog postanaj. Svejedno, hvala. A sto se tice ViewBag-a, nisam znao da u “to” stane nesto vise od ako mogu reci neke poruke/citata - bar kolko sam vidio po primjerima na netu, al’ dobro - sad znam :). I sad, imam jedno pitanje glede MVC-a. Dosta ljudi hvali MVC i govori kako je to buducnost itd., i nije mi jasno, zasto onda ti ljudi koji ga hvale, naprave svoju novu stranicu u webForms tj., aspx-u? Jel to mozda jednostavno do navike ili…?

Navika i postojece znanje. Treba malo “hrabrosti” za upustiti se u neki projekt sa tehnologijom (MVC) u koji nisi 100% siguran i nemas iskustva, a rokovi se priblizavaju. Takodjer, postoji i problem tima - ako tim ne zeli prijeci na MVC onda se pojedinac mora prilagoditi.

WebForms je cak i bolji za RAD nacin rada -drag-drop DataSource kontrole, grida, forme, pospajas to, i eto ti gotove jednostavne aplikacije koja se spaja na bazu. To se sa MVCom nemoze napraviti u tako kratkom roku,

Nazalost, vecina timova sa kojima sam radio i dalje koristi WebForms, jer sa tim zna raditi, i ne vide neke posebne probleme u njemu (npr. nisu nikada otvorili html source od stranice!). To je iz razloga sto su 80% programera samo obicni, 8-16h programeri, koji kada odu sa posla zaborave u potpunosti programiranje, do sljedeceg jutra. I onda rade samo minimalno da naprave posao.
Ali to je ok, tako je u cijelom svijetu. U firmi bi tada moralo postojati 1-2 glavnih programera geekova koji ce gurati tehnologiju naprijed i inspirirati i motivirati ostale clanove tima.