我很难让 HTML.ActionLink() 创建正确的链接。
我的选择是:
- http://localhost:49242/en-us/PinnedSites ,
- http://localhost:49242/en-us/addons ,
- http://localhost:49242/en-us/trackingprotectionlists
但是当我导航到 http://localhost:49242/en-us/PinnedSites 时我的选择是:
- http://localhost:49242/en-us/PinnedSites/PinnedSites ,
- http://localhost:49242/en-us/PinnedSites/addons ,
- http://localhost:49242/en-us/PinnedSites/trackingprotectionlists
当然,所有这些网址都会失败。
这是我的 html:
.cshtml(Html/razor)
<li id="nav_pinning">
@Html.ActionLink( "pinned sites", "index", "PinnedSites")</li>
<li id="nav_addons">
@Html.ActionLink("add-ons", "index", "addons")</li>
<li id="nav_control">
@Html.ActionLink("tracking protection lists",
"index",
"trackingprotectionlists",
null,
null)</li>
Global.asax.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("favicon.ico");
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{culture}/{controller}/{action}",
new { culture = "en-us",
controller = "Home",
action = "Index",
}
);
}
我的问题出在哪里?/PinnedSites/有可能实际上并没有转到 PinnedSitesController 吗?
(我会积极关注这一点,如果您希望我尝试或提供更多代码,请发表评论。)
最佳答案
您的项目中有 HomeController 吗?如果是这样,您应该按照以下方式注册默认 Controller :
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
但是,除此之外,您是否尝试过直接将路由直接发送到您的 PinnedSites Controller ?
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("favicon.ico");
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{culture}/{controller}/{action}",
new { culture = "en-us",
controller = "PinnedSites",
action = "Index",
}
);
}
关于asp.net - HTML.ActionLink() 生成不正确的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8127221/