2015-05-20 80 views
34

Html.ActionLink()中的問題是,您無法在其生成的標記內添加其他HTML內容。 例如,如果你想添加一個圖標,除了像文字:如何在Url.Action中傳遞區域?

<a href="/Admin/Users"><i class="fa fa-users"></i> Go to Users</a> 

使用Html.ActionLink(),只能生成:

<a href="/Admin/Users">Go to Users</a> 

因此,要解決這個問題,你可以使用Url.Action()只產生像標籤裏面的網址:

// Here, Url.Action could not generate the URL "/admin/users". So this doesn't work. 
<a href="@Url.Action("", "Users", "Admin")"><i class="fa fa-usesr"></i> Go to Users</a> 

// This works, as we know it but won't pass the Area needed. 
<a href="@Url.Action("", "Users")"><i class="fa fa-users"></i> Go to Users</a> 

那麼,你如何通過使用Url.Action面積()?

非常感謝您提前!

+12

'Url.Action(「actionName」,「controllerName」,new {Area =「areaName」});' – haim770

+2

對於根區'new {Area =「」}' – Corio

回答

56

您可以使用此Url.Action("actionName", "controllerName", new { Area = "areaName" });

也不要忘了添加控制器的命名空間,以避免管理區控制器名稱和站點控制器名稱之間的衝突。

像這樣的事情

public override void RegisterArea(AreaRegistrationContext context) 
     { 
      context.MapRoute(
       "Admin_default", 
       "Admin/{controller}/{action}/{id}", 
       new { action = "Index", id = UrlParameter.Optional }, 
        new[] { "Site.Mvc.Areas.Admin.Controllers" } 
      ); 
     } 
2
@Url.Action("{action}", "{controller}", new { Area = "areaname" }); 
@Html.ActionLink("LinkName", "{action}", "{controller}", new { area = "{areaname}" }, new { @class = "btn btn-cool" }) 

寫入區域名稱與anonymus對象HTML屬性。你可以使用actionlink html helper擴展方法來實現同樣的事情。

相關問題