2013-08-23 9 views
6

Próbuję przekazać obiekt przez łącze ActionLink do metody w kontrolerze MVC.Html.ActionLink() nie działa, aby przekazać obiekt C#

Składnia brzytwa:

@Html.ActionLink("Export to Excel","ReturnExcelOfViewableResponses",new { SearchObject = Model.SearchObject}) 

Co faktycznie są wyświetlane w znacznikach:

<a href="/EducationAgency/ReturnExcelOfViewableResponses?SearchObject=DTO.SearchObject" tabindex="29">Export to Excel</a> 

Metoda kontroler jest nazywany po prostu w porządku, a więc nie ma powodu, aby umieścić tutaj. Co należy zrobić, aby rzeczywiste wartości zostały przekazane do actionLink zamiast DTO.SearchObject? Według HTML.ActionLink method wygląda na to, że mam odpowiednią składnię (używając MVC 4).

Odpowiedz

9

Powinieneś być w stanie przekazać dto, zakładając, że jest to po prostu, że jako parametr do ActionLink:

@Html.ActionLink("Export to Excel","ReturnExcelOfViewableResponses",Model.SearchObject) 

Wszelkie publiczne pola zostaną dodane jako para kluczowym parametrem zapytania/wartość.

+0

Dzięki! To było to. Zgaduję, że to nowy format MVC 4? – levininja

+1

@levininja - nah, wbrew temu, o czym mówi odpowiedź w twoim pytaniu, jestem pewien, że nie było dużych różnic między MVC 1, 2, 3 i 4 dla tych metod. Ta funkcja jest rzadko używana w porównaniu z przekazywaniem anonimowego obiektu (jak na przykład w pytaniu). W obu przypadkach przekazany obiekt definiuje wartości tras - a właściwości (pierwszego poziomu) obiektu są (ostatecznie) zamieniane na parametry zapytania przez odbicie - nie ma znaczenia, jaki to obiekt. Ale anonimowy obiekt, który przekazujesz w swoim pytaniu, ma tylko jedną właściwość "pierwszego poziomu": SearchObject. – JimmiTh