2012-02-07 8 views
5

Non so se questo è normale, ma i metodi ChildActionOnly devono richiedere il percorso? Per esempioASP MVC ChildActionOnly dovrebbe avere routing

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

rendo le cose come:

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

Nel mettere a punto mi trovo riga superiore:

Nessun percorso nella tabella di route corrisponde ai valori forniti.

UPDATE

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

risposta

5

Sì lo fa.

Tutto il [ChildActionOnly] indica che questa azione non è accessibile tramite l'URL (ad esempio un normale HTTP GET), piuttosto deve essere eseguita da Html.Action o Html.RenderAction. Non è una nuova richiesta HTTP, ma passa ancora attraverso la pipeline di richieste MVC (controller/selezione di azioni tramite valori di route).

+0

Grazie. Ancora una cosa ho una domanda aggiornata e ho aggiunto un esempio del valore del percorso. Puoi dirmi che è valido avere due parametri opzionali? – 1110

+0

@ 1110 - sì lo è. I valori saranno semplicemente impostati su 'string.Empty' non è impostato alcun valore. – RPM1984