我有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
这只是我面临的问题。
请提出您的意见和建议。
答案 0 :(得分:1)
是的,我认为我的目标是错误的。在RouteConfig.cs
文件中,为Home/Index
和Home/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
出现两次我不清楚,但创建自己的路线应该会有所帮助。