繁体   English   中英

AngularJS在.net MVC中路由html5Mode直接URL

[英]Angularjs route html5Mode direct url in .net MVC

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

我可以获取404或在mvc中创建相同的url,但随后它仅在刷新时提供部分内容,并且不包括布局页面。

有几个建议将MVC路由更改为:

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

实施该功能后,这意味着我无法正常访问网站上的任何其他URL,除非我丢失了某些内容,否则基本上所有内容都必须放入rest api或为每个URL编写自定义路由。 听起来都不是很好。

所以我怎么能有一个带有angularjs的html5 url(在有效的浏览器中没有哈希标签),并能够浏览到例如。 Home / About或Home,然后单击指向About的链接,让它们在相同的基本布局页面中显示相同的内容?

这可能不是最好的答案,因此,如果有人有更好的主意,请发表评论,否则也许会对其他人有所帮助。

我意识到MVC Ajax指令无法检测到角度调用,因此无法自动执行该操作。

所以在角度上我做了类似的事情

.when('/Home/Contact', {
    templateUrl: '/Home/NgContact'

在我的MVC控制器中,我有2个动作结果:

public ActionResult NgContact(){
    ViewBag.IsFromNg = 1;
    return Contact();
 }
 public ActionResult Contact() {
    return View("Contact"); //have to type in name, may look for NgContact.cshtml
 }

最后,关于这些观点,我可以这样说:

@if (ViewBag.IsFromNg == 1){ Layout = null; }

因此,每个Actionresult都有2个副本,其中1个用于完整页面加载,1个用于任何角度创建调用,但每个重复仅3条。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM