2015-05-20 24 views
34

Html.ActionLink() uygulamasındaki sorun, oluşturduğu etikete ek html içeriği ekleyemezsiniz. Eğer gibi metnin yanında bir simge eklemek istiyorsanız Örneğin : Html.ActionLink() kullanarakUrl.Action Alanında Nasıl Geçilir?

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

, yalnızca oluşturabilir:

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

Yani, bu sorunu çözmek için aşağıdakileri yapabilirsiniz

// 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> 

Peki, nasıl Url.Action kullanarak Area geçmek yapmak(): gibi etiketinin içine sadece URL oluşturmak Url.Action() kullanılır?

Çok önceden teşekkürler!

+12

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

+2

Kök alanı için 'new {Area = ""} ' – Corio

cevap

56

Bu Url.Action("actionName", "controllerName", new { Area = "areaName" });

Ayrıca yönetici alanı denetleyicisi adları ve site denetleyicisi adları arasında bir çelişki önlemek için kumandanın ad eklemeyi unutmayın kullanabilirsiniz. isimsiz nesneyle html niteliği olarak bu

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" }) 

yazma alanı adı gibi

şey. Aynı şeyi elde etmek için actionlink html helper extension yöntemini kullanabilirsiniz.