Puis-je faire quelque chose de semblable à cela d'une manière qui ne jette pas une erreur:MVC surcharge d'action du contrôleur
public class AdsController : Controller
{
AdsRepository repo = new AdsRepository();
public ActionResult Details(string id)
{
AdSlots adslot = new AdSlots();
Enum.TryParse(id, true, out adslot);
return Content(repo.GetInvocationCode(adslot, Global.SiteInfo.ID));
}
[ChildActionOnly]
public ActionResult Details(AdSlots slot)
{
return Content(repo.GetInvocationCode(slot, Global.SiteInfo.ID));
}
}
Le point est que je veux avoir un moyen d'accéder à la ressource par le biais/annonces/détails/leaderboard comme URL dans le navigateur, mais aussi dans les pages de maître en utilisant:
<% Html.RenderAction("Details", "Ads", new {slot = AdSlots.Leaderboard }); %>
Je pense que c'est plus propre que:
<% Html.RenderAction("Details", "Ads", new {slot = "Leaderboard" }); %>
Si je fais comme ci-dessus et appelle l'URL/annonces/détails/leaderboard Je reçois cette erreur:
The current request for action 'Details' on controller type 'AdsController' is ambiguous between the following action methods.. etc
Je ne pensais pas que je recevrais cette erreur comme je l'ai donné l'attribut [ChildActionOnly] à la autre action. Je pensais alors qu'il était évident pour le système que si j'y accédais via le navigateur, je n'aurais qu'une seule option, pas si apparemment.