最も簡単な方法は、コントローラー名とアクション名をモデルの文字列として持つことです。次に、強く型付けされていない 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) })%>
もちろん、お持ちのパラメータに合わせてこれを調整する必要があります。厳密に型指定された方法の良い点は、メソッドのシグネチャとパラメーター名がまったく同じである必要がないことです。