don*_*ona 50 asp.net-mvc html-helper url.action html.actionlink
Html.ActionLink()中的问题是您无法在其生成的标记内添加其他html内容.例如,如果要添加文本旁边的图标,例如:
<a href="/Admin/Users"><i class="fa fa-users"></i> Go to Users</a>
Run Code Online (Sandbox Code Playgroud)
使用Html.ActionLink(),您只能生成:
<a href="/Admin/Users">Go to Users</a>
Run Code Online (Sandbox Code Playgroud)
因此,要解决此问题,您可以使用Url.Action()仅生成标记内的URL,如:
// 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>
Run Code Online (Sandbox Code Playgroud)
那么,你如何使用Url.Action()传递区域?
非常感谢你提前!
sak*_*kir 77
你可以用它 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" }
);
}
Run Code Online (Sandbox Code Playgroud)
@Url.Action("{action}", "{controller}", new { Area = "areaname" });
@Html.ActionLink("LinkName", "{action}", "{controller}", new { area = "{areaname}" }, new { @class = "btn btn-cool" })
Run Code Online (Sandbox Code Playgroud)
使用anonymus对象将区域名称写为html属性.你可以使用actionlink html helper扩展方法来实现同样的功能.
如果你想为根控制器创建链接,使用以下代码就足够了:
Url.Action("ShowImage", "Page", new { Area = "" })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54170 次 |
| 最近记录: |