我有一个带有区域的 MVC 3 应用程序,并且我正在从特定区域和控制器公开服务。到此服务的路由在 AreaRegistration 中定义,如下所示
public class AreaAreaRegistration : AreaRegistration
{
public override string AreaName
{
get { return "Area"; }
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.Routes.Add(
new ServiceRoute("Area/Controller/Service",
new NinjectServiceHostFactory(), typeof(MyService)));
// ....
}
}
在我的Global.asax.cs
我只定义了一个默认路由
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
在我_Layout.chshtml
的主页中有一个链接,我在其中给出了一个空白区域,我希望它可以在顶部文件夹中(在区域文件夹之外)中找到操作Index
:HomeController
Controllers
@Html.ActionLink("Home", "Index", "Home", new { area = "" }, null)
由于某种原因,这ActionLink
呈现为
~/Area/Controller/Service?action=Index&controller=Home
如果我注释掉 ServiceRoute,同样的ActionLink
点~/
就是我所期望的。
任何想法如何解决此路由问题?我发现的唯一解决方法是改用它:
<a href="@Url.Content("~/")">Home</a>