2010-09-21 79 views
29

MVC中的一個簡單任務有時會變成一項艱鉅的挑戰。ASP.NET MVC ActionLink以外的區域

那麼,我有一個區域稱爲管理員。我在這個區域的共享目錄裏有一個名爲「Forbidden」的頁面。

目標很簡單:我需要創建一個Html.ActionLink,它會生成一個返回主頁的鏈接,它是OUIDIDE管理區域。

所以我儘量,<%= Html.ActionLink("Back","Index",new {controller="Home"})%>,其產生:

http://localhost/Admin/Home/Index 

它錯了,我想:

http://localhost/Home/Index 

如何創建從一個區域的鏈接到默認的控制器結構?

回答

51

試試這個:

<%= Html.ActionLink("Back", "Index", "Home", new { area = "" }, null) %> 

使用領域,你應該總是指定你在你的ActionLinks通過添加路由值作爲上述呼籲的區域,如果該鏈接是在禁區外(如您案),只需使用該區域的空白參數。


有一個很好的擴展,我覺得在任何ASP.NET MVC項目(T4MVC)是必不可少的。它使您的ActionLink看起來更清潔,並且可以防止錯誤發生。

所以上面的代碼會是這個樣子:

<%= Html.ActionLink("Back", MVC.Home.Index()) %> 

和使用區域時:

<%= Html.ActionLink("Some Link", MVC.Admin.SomeController.SomeAction()) %> 

這是MvcContrib項目在CodePlex上here

的一部分你應該考慮使用它。

+0

我試圖變得棘手,並將此添加到我的AreaRegistration默認路由,但沒有奏效。直接到area =「」的手冊在常規操作鏈接中工作。謝謝。 – kmehta 2012-03-30 23:17:37

+1

而形式這是你如何做到這一點。 'Html.BeginForm(「LogOff」,「Account」,new {area =「」},FormMethod.Post,new {id =「logoutForm」}))' – 2013-05-24 06:10:55