La façon la plus simple serait d'avoir le nom du contrôleur et le nom de l'action en tant que chaînes sur votre modèle. Ensuite, vous pouvez utiliser la surcharge non typée de l'actionlink. Quelque chose comme ceci:
<%=Html.ActionLink(Model.Action, Model.Controller, new { param1 = 1, param2 = 2 })%>
Et l'utiliser comme ceci:
<%Html.RenderPartial("PartialName", new PartialModel{Controller = "Person", Action = "Publications"})%>
Si vous souhaitez utiliser la version fortement typé que vous pouvez faire quelque chose comme ceci:
//Model for your partial view
public class PartialModel<TController> where TController : Controller
{
public Func<int, int, Expression<Action<TController>>> GetLinkAction { get; set; }
}
//Render the action link in your partial
<%=Html.ActionLink(Model.GetLinkAction(1, 2))%>
//Render the partialview in any page
<%Html.RenderPartial("PartialName", new PartialModel<PersonController> { GetLinkAction = (param1, param2) => x => x.Publications(param1, param2) })%>
Vous aurez bien Bien sûr, il faut ajuster cela pour les paramètres que vous avez. La bonne chose à propos de la méthode fortement typée est que les méthodes n'ont pas nécessairement les mêmes noms de signature et de paramètre.
Wonderfull :) Merci beaucoup! –