无法在MVC中使用@ Url.Action生成绝对网址

时间:2015-04-20 12:11:20

标签: asp.net asp.net-mvc vb.net

我有MVC网站,我试图用url.action制作绝对网址但尚未成功。

以下是我正在使用的代码:

 <li><a href="@Url.Action("Index", "Home")">Home</a></li>
 <li><a href="@Url.Action("Contact","Home")">Contact</a></li>

Home和Contact都在同一视图中。

所以这里是错误描述:当我运行网站时,它会显示此网址并完美打开网站。现在,如果我点击“联系”链接,它会显示正确的网址:

 http://localhost:5423/Home/Contact

之后我点击“主页”链接它给了我错误的网址:

http://localhost:5423/Home/Home/Index

正确的网址应该是这样的:

http://localhost:5423/Home/Index

我不知道为什么它在URL中保留“Home”。

这是我在Global.asax.vb中写的

Public Class MvcApplication
    Inherits System.Web.HttpApplication

    Sub Application_Start()
        AreaRegistration.RegisterAllAreas()

        WebApiConfig.Register(GlobalConfiguration.Configuration)
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters)
        RouteConfig.RegisterRoutes(RouteTable.Routes)
        BundleConfig.RegisterBundles(BundleTable.Bundles)
        AuthConfig.RegisterAuth()
    End Sub
End Class

以下是RouteConfig的代码:

 Public Class RouteConfig
 Public Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
 routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
 routes.MapRoute( _
 name:="Default", _
 url:="{controller}/{action}/{id}", _
 defaults:=New With {.controller = "Home", .action = "Index", .id =  UrlParameter.Optional} _
    )
 End Sub
 End Class

这只是我面临的问题。

请提出您的意见和建议。

1 个答案:

答案 0 :(得分:1)

是的,我认为我的目标是错误的。在RouteConfig.cs文件中,为Home/IndexHome/Contact添加新路由(对于C#道歉,我不再使用VB.NET):

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "HomeLink",
        url: "Home/Index",
        defaults: new { controller = "Home", action = "Index" }
    );

    routes.MapRoute(
        name: "ContactLink",
        url: "Home/Contact",
        defaults: new { controller = "Home", action = "Contact" }
    );

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

在您的视图中,创建如下链接:

<li><a href="@Url.RouteUrl("HomeLink")">Home</a></li>
<li><a href="@Url.RouteUrl("ContactLink")">Contact</a></li>

这样做可以解决您的网址问题。为什么Home出现两次我不清楚,但创建自己的路线应该会有所帮助。