2012-02-29 57 views
3

在asp.net mvc 3中,如果我有一个名为MyArea的区域,我将如何使用Url.Action或Url.RouteUrl来获取到http://myapproot/MyArea/的链接?我想链接到该区域的根目录,以便我可以在JavaScript中重新使用URL,所以如果可能的话,我不希望在URL中有控制器或操作。如何链接到某个区域的根目录?

回答

3

要为您的MyArea创建一个“根”,您可以在位于您的MyArea的AreaRegistration类中的RegisterArea()方法中创建一条路径。

例子: 富是 “根” 控制器的名字..

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     "MyArea_default", 
     "MyArea/Foo/{action}/{id}", 
     new { action = "Index", id = UrlParameter.Optional } 
    ); 
} 

然后从你的剃须刀的网页,你可以这样调用具体路线...

@Url.RouteUrl("MyArea_default") 

这将被渲染为

/MyArea/Foo 
+0

好的,所以没有办法*干净地*写一个链接,只去/ MyArea? – ptrc 2012-03-01 13:39:02

+0

我不清楚你的意思是_cleanly write_ - 在我看来,调用@ Url.RouteUrl(“[route name]”)是干净的。也许你更愿意添加一个新的路由到你的** Global.asax.cs **,它将简单地指定“MyArea”作为URL。然后,您可以在剃须刀页面上调用** @ Url.RouteUrl(“MyArea”)**以呈现**/MyArea **。 – Jed 2012-03-01 15:15:43

+0

对不起,正如你提到的那样,'干净'我的意思是基本上达到与专门为该地区创建路线相同的效果。所以这将是答案。 这里的推理是我有一堆存储在一个名为'Components'的区域中的部分视图,并且我使用取决于用户操作(按钮点击,无论)的方式从ajax调用动态呈现它们。这就是为什么我想直接链接到“根”区域URL,所以我可以引用它,然后根据需要追加控制器/操作。感谢您为我清理这个。 – ptrc 2012-03-01 20:23:41

1

您可以使用Html.ActionLink

<%= Html.ActionLink("Show Blog", "ShowBlog", "Blog", new { area = "blog" }, null) %> 

Blog为您的区域。看看this

+0

对,我的理解这就是如何链接到特定领域的行动。我的问题是我不想显式链接到博客控制器或ShowBlog操作。 – ptrc 2012-02-29 19:50:59

+0

所以你必须在'Global.asax'中设置'MapRoute',然后在'Url.Action'函数中调用它的名字。 – Jalal 2012-02-29 19:55:38

相关问题