2016-01-29 40 views
1

我正在開發這個項目,我需要一個管理員區域。 我有路由工作,所以如果我手動輸入URL我可以得到控制器和索引頁面:「http://localhost:8000/Admin/Admin」,但我如何鏈接到它使用標籤助手(或actionLink)從原來的家庭控制器和索引頁?如何使用ASP.NET 5.0和MVC 6中的標籤助手鍊接到另一個區域中的控制器

我已經試過(其中沒有工作)是:

<a asp-controller="Admin" asp-action="Index">Admin</a> 
<a asp-route="areaRoute"asp-controller="Admin" asp-action="Index">Admin</a> 

我是很新,這使我很抱歉,如果這是一個簡單的問題,但我不知道,我還沒有在網上看到這個例子。

我遵循了與本示例(步驟1)相同的地圖結構:http://timjames.me/blog/2014/12/13/mvc-areas-with-vnext/ 但我有「Admin」而不是「MyArea」。

這是我在管理區域控制器:

namespace projectName.Areas.Admin.Controllers 
{ 
[Area("Admin")] 
public class AdminController : Controller 
{ 
    public IActionResult Index() 
    { 
     return View(); 
    } 
} 
} 

這是我的路由:

app.UseMvc(routes => 
{ 

routes.MapRoute(
name: "areaRoute", 
template: "{area:exists}/{controller}/{action}/{id?}", 
defaults: new { controller = "Admin", action = "Index" }); 

routes.MapRoute(
name: "Default", 
emplate: "{controller}/{action}/{id?}", 
defaults: new { controller = "Account", action = "Login" }); 

}); 
+0

然而,你的模板仍然是模板:「{area:exists}/{controller}/{action}/{id?}」,並且仍然需要區域,並且路由不需要控制器和操作。 –

回答

1

routeValues參數設置的區域:

var adminUrl = Url.Action("Index", "Admin", new { Area = "Admin" }); 
// or render link directly: 
@Html.ActionLink(Resources.Admin, "Index", "Admin", new { Area = "Admin" }, null) 

routeValues也設置操作所需的其他參數的位置,如ids。

+0

「Resources.Admin」包含什麼? – MazW

+0

這只是一個用作鏈接名稱的字符串,取自資源文件。 http://stvault.net/post/using-resource-files-in-asp-net-mvc-project相當於編寫「@ Html.ActionLink(」SomeLinkName「,」Index「,」Admin「,new {Area = 「Admin」},null)' –

+0

謝謝。它效果很好! – MazW

相關問題