2010-05-07 55 views
1

我已經ASCX局部視圖像Asp.net的mvc配置Html.ActionLink控制器/法

<%=Html.ActionLink<PersonController>(x => x.Publications(param1, param2, ...)) %> 

我的ascx是相當大的&我想重新使用它,改變控制器/法HTML佈局在Html.ActionLink與另一個控制器/方法。另一個控制器的方法與PersonController.Publications具有相同的簽名。請給我建議如何使控制器/方法可以配置爲我的佈局的最佳方式。

預先感謝您

回答

1

最簡單的方法是讓控制器名稱和動作名稱爲您的型號字符串。然後你可以使用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) })%> 

你會的當然必須根據你的參數進行調整。強類型方法的好處在於方法不必具有完全相同的簽名和參數名稱。

+0

非常感謝:)非常感謝! – 2010-05-07 10:51:41