2010-06-30 2 views
39

Używam Html.Action("ActionName", "ControllerName") do wywoływania akcji podrzędnych w kontrolerach bez konieczności posiadania widoku w widokach \ Shared. Działa to doskonale w przypadku wyświetlania takich informacji, jak informacje o sesjach lub plikach cookie.Jak mogę przekazać parametry do działania przy użyciu Html.Action() w ASP.NET MVC?

Zamiast dostępu do plików cookie, chciałbym przekazać dodatkowe parametry do Html.Action("ActionName", "ControllerName"), aby akcja mogła wykonywać inny kod na podstawie danych przekazanych do oryginalnego widoku.

Czy powinienem używać innej metody przekazywania parametrów do akcji podrzędnej w innym kontrolerze? Jak można to osiągnąć?

Odpowiedz

84

Można podać dodatkowe dane w tej właściwości RouteValues ​​w ten sposób.

Html.Action("Controller","Name", new { id = 1 }) 
+2

Aw Słodki !!! Widziałem RouteValues ​​w intelisense, ale nie użyłem tego formatu. Próbowałem 'Html.Action (" Action "," Controller ", model.Paramter)'. Spróbuję tego od razu. – quakkels

+0

W jaki sposób przekazujesz ciąg znaków, taki jak tekst, lub identyfikator automatycznie rozwijanego elementu listy rozwijanej? – antman1p

+1

@ antman1p To brzmi jak nowe pytanie, a nie komentarz. Prześlij link do nowego pytania tutaj, a ja pomogę jak najwięcej. Jedna rzecz, brzmi to, jak to, co próbujesz zrobić, dzieje się u klienta, ponieważ zależy to od interakcji z użytkownikiem (przeglądarka), podczas gdy to pytanie w szczególności odnosi się do tego, jak uzyskać link do działania, które zawiera parametr, który jest renderowane w widoku po stronie serwera. –

-1

Aby dodać trochę na to pytanie, używam ASP.NET MVC 5 i może uda mi się to osiągnąć z tym kodem:

@Html.Action("foo",new {parameter1=1}) 
+2

To jest przeciążenie ta sama metoda. W tym przeciążeniu zakłada się, że wywołujesz ten sam kontroler, który był używany do renderowania bieżącego widoku, a akcja jest "foo". Warto wspomnieć o kilku innych przeciążeniach: https://msdn.microsoft.com/en-us/library/system.web.mvc.html.childactionextensions.action%28v=vs.118%29.aspx –