2009-10-13 60 views
0

我需要在控制器之外生成操作鏈接。ASP.NET MVC在自己的類中的操作鏈接

我可以在視圖中使用Html.Action,在控制器中使用Url.Action。這很好,但...

我有我自己的類,我要生成站點菜單的HTML代碼,這是在site.master中使用。但是我怎樣才能在自己的課堂上生成動作鏈接?可能的解決方案是在BaseController中生成這個HTML代碼,但我不想這樣做,因爲我的類應該是獨立的,並且能夠生成正確的鏈接。

我一直在Google上搜索,但沒有找到解決方案。

任何幫助?謝謝

回答

1

操作鏈接生成取決於路由配置和控制器上下文。這兩個都只在實際的ASP.NET MVC管道中可用。試想一下:如果我告訴你要生成一個操作鏈接,但沒有告訴你有關該Web應用程序的任何信息,你會怎麼做?

如果您擔心SOLID,爲什麼不將UrlHelperHtmlHelperControllerContext注入到您的課程中以生成操作鏈接?

void GenerateLinks(HtmlHelper html) { ... } 
void GenerateLinks(UrlHelper url) { ... } 
void GenerateLinks(ControllerContext context) { ... } 
1

傳遞自己對Html對象的引用,以便在實例化類時可以在方法中使用它。您可以在實例化菜單對象時執行此操作,或者在每個函數調用時(如果它們是靜態的)。