Angularjs在.net MVC中路由html5Mode直接url

时间:2015-10-15 21:00:24

标签: angularjs asp.net-mvc routing

我已经看过几个类似的问题/答案,但我似乎仍然缺少一些东西。一切正常,直到我刷新页面或直接转到URL。

我可以获得404或在mvc中创建相同的URL,但是它仅在刷新时提供部分并且不包括布局页面。

有一对建议将MVC路由更改为:

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

当实现时,这意味着我无法正常访问网站上的任何其他网址,除非我遗漏了某些内容,否则基本上所有内容都必须放入休息API或为每个网址编写自定义路由。听起来都不是很好。

那么我如何在angularjs中拥有一个html5网址(在有效浏览器中没有哈希标签)并且能够浏览到例如。主页/关于或主页然后单击“关于”的链接并让它们显示相同的基本布局页面?

1 个答案:

答案 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个额外行。