我目前正在使用HashRouter
并且效果非常好。但是,我希望能够在子路由上使用#
以及链接段落。例如/details#Summary
。作为一项好处,我还将获得更清晰的网址,如果需要,我可以获得一些SEO。
在刷新/直接链接上运行并提供正确的结果。
<HashRouter>
<App />
</HashRouter>
可以使用但在刷新/直接链接上提供404。
<BrowserRouter>
<App />
</BrowserRouter>
我知道这里的问题是.Net
中的路由,我需要更改它。我需要做什么?我有一个默认路线,但没有被击中。
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
答案 0 :(得分:0)
首先删除上面显示的标准routes.MapRoute
,然后添加:
routes.MapRoute("Client", "{*anything}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
现在任何路线都会呈现您的默认操作。
可选强>
如果您有一个带属性路由的控制器,例如:
[RoutePrefix("Home")]
public HomeController : Controller {
//GET Home/Index
[HttpGet]
[Route("Index")]
public ActionResult Index() {
return View();
}
}
您还需要添加:
routes.MapMvcAttributeRoutes();
答案 1 :(得分:0)
问题在于,当你改变它时,asp.net会不断尝试匹配路线以获取详细信息。
您需要做的是创建一个匹配所有路径的路由,以便返回默认路径,例如:home / index
这是我使用的路线:
routes.MapRoute(
"Default",
"{*url}",
new { controller = "Home", action = "Index" });
这将控制浏览器在&#39; /&#39;
之后计算路径