我已经看过几个类似的问题/答案,但我似乎仍然缺少一些东西。一切正常,直到我刷新页面或直接转到URL。
我可以获得404或在mvc中创建相同的URL,但是它仅在刷新时提供部分并且不包括布局页面。
有一对建议将MVC路由更改为:
routes.MapRoute(
name: "Application",
url: "{*url}",
defaults: new { controller = "Home", action = "Index" }
);
当实现时,这意味着我无法正常访问网站上的任何其他网址,除非我遗漏了某些内容,否则基本上所有内容都必须放入休息API或为每个网址编写自定义路由。听起来都不是很好。
那么我如何在angularjs中拥有一个html5网址(在有效浏览器中没有哈希标签)并且能够浏览到例如。主页/关于或主页然后单击“关于”的链接并让它们显示相同的基本布局页面?
答案 0 :(得分:0)
这可能不是最好的答案,所以如果有人有任何更好的想法,请发表评论,否则这可能会帮助别人。
我意识到MVC Ajax指令没有检测到角度调用,所以我无法自动化那一方。
所以在角度上我做了类似
的事情public ActionResult NgContact(){
ViewBag.IsFromNg = 1;
return Contact();
}
public ActionResult Contact() {
return View("Contact"); //have to type in name, may look for NgContact.cshtml
}
在我的MVC控制器中,我有2个动作结果:
@if (ViewBag.IsFromNg == 1){ Layout = null; }
最后,对于任何观点,我可以称之为:
href="#myModal"
因此,每个Actionresult有2个副本,1个用于整页加载,1个用于任何调用角度,但每个只有3个额外行。