2012-02-07 8 views
5

Nie wiem, czy to jest normalne, ale czy metody powinny być pytane o trasę w przypadku metod ChildActionOnly? Na przykładASP MVC ChildActionOnly powinien mieć routing

[ChildActionOnly] 
     public PartialViewResult List(string countryCode, string cityName) 
     {... 
      return PartialView(model); 
     } 

I czynią to lubią:

@{Html.RenderAction("List", "MyController", new { area = "MyArea", countryCode = ViewBag.CountryCode, cityName = ViewBag.CityName });} 

W debugowania I dostać się na górnej linii:

Brak trasy w tabeli tras odpowiada podanemu wartości.

UPDATE

context.MapRoute("name", 
       "", 
       new { area = "MyArea", controller = "MyControlelr", action = "List", countryCode = UrlParameter.Optional, cityName = UrlParameter.Optional }); 

Odpowiedz

5

Tak robi.

Wszystko wskazuje na to, że nie można uzyskać dostępu do tej akcji za pośrednictwem adresu URL (np. Zwykłego HTTP GET), ale musi zostać wykonane przez Html.Action lub Html.RenderAction. To nie jest nowe żądanie HTTP, ale nadal przechodzi przez potok żądań MVC (wybór kontrolera/działania poprzez wartości trasy).

+0

Dzięki. Jeszcze jedno pytanie Zaktualizowałem pytanie i dodałem przykład wartości trasy. Czy możesz mi powiedzieć, czy to jest ważne, aby mieć dwa opcjonalne parametry? – 1110

+0

@ 1110 - tak jest. Wartości zostaną po prostu ustawione na 'string.Empty', jeśli nie ustawiono żadnych wartości. – RPM1984