Самый простой способ будет иметь имя контроллера и имя действия, как струны на вашей модели. Затем вы можете использовать ненавязчивую перегрузку actionlink. Что-то вроде этого:
<%=Html.ActionLink(Model.Action, Model.Controller, new { param1 = 1, param2 = 2 })%>
И использовать его как это:
<%Html.RenderPartial("PartialName", new PartialModel{Controller = "Person", Action = "Publications"})%>
Если вы хотите использовать сильно типизированных версию вы можете сделать что-то вроде этого:
//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) })%>
Вы волею конечно, нужно настроить это для параметров, которые у вас есть. Хорошая вещь о строго типизированном способе заключается в том, что методы не должны иметь одинаковые имена сигнатур и параметров.
Wonderfull :) Большое спасибо! –