Pracuję z MVC w .net 4.0. Mam podstawowe Html.ActionLink i chcę przekazać wiele parametrów do kontrolera/działania.Jak przekazać wiele parametrów (niektóre złożone obiekty) za pomocą Html.ActionLink
Za każdym razem, gdy debuguję ActionResult, tylko JEDEN z moich parametrów przychodzi, a drugi ma wartość zerową (w zależności od tego, która jest pierwsza). Teraz wiem, że mogę przekazywać skomplikowane obiekty, ponieważ mogę uzyskać obiekt "Ligi". Jednak nie jestem pewien, dlaczego tylko JEDEN z moich parametrów pokonuje go w dowolnym momencie.
kod w widoku (nie nękać mnie o ViewBag wiem, że to nie jest popularne również League to kompleks obiektów..)
@Html.ActionLink("Sort By WeeK", "Sort", "Schedule",
new { league = ViewBag.League, sortType = "Week" }, null)
kod w kontrolerze: (tu żadnych niespodzianek)
public ActionResult Sort(League league, string sortType)
{
//Do some stuff here
return View("Schedule");
}
Zgaduję, że odpowiedź będzie dotyczyć routingu. Co prowadzi mnie do drugiego pytania. Jak mogę uruchomić tego typu ActionLink (Action/Controller/Collection of Complex i Simple objects), aby pracować bez ciągłego dodawania nowych maproutów. Czy istnieje ogólna/wieloznaczna RouteMap, którą mógłbym dodać, więc nie muszę ciągle dodawać anatomicznie identycznych map tras do global.asax. A może potrzebuję pewnej elastyczności w typie obiektów, które chciałbym przekazać do akcji, więc nie mogę wstępnie zdefiniować dokładnego podpisu.
Widziałem wiele postów na ten temat, ale żaden z nich nie odpowiedział na moje pytania.
dziwne. Wypróbuj FormCollection w akcji kontrolera i sprawdź, czy zwraca wiele kluczy. W najgorszym przypadku można zmienić go w formularz i przesłać ukryty kod HTML. – Ammar
Kiedy mówisz "Który jest pierwszy", masz na myśli przede wszystkim podpis metody lub pierwszy adres URL linku? Jak wygląda wygenerowany URL? –