如何在ASP.Net MVC 4应用程序中使用Angular视图?

时间:2014-03-13 20:37:39

标签: c# asp.net angularjs asp.net-mvc-4

我想使用Angular.JS来实现多个联系表单,但我不确定如何防止angular的路由干扰ASP.Net的路由。

我的ASP.Net MVC 4路线看起来像这样(这是一个带有微小改动的默认项目):

namespace Angular_Test
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{action}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
}

我希望我的联系页面(位于/contactng-view div默认为类似(例如)form.html,并且有一些链接可以加载{{ 1}},form2.html等等。但是将这些链接指向像form3.html这样的东西完全搞砸ASP.Net的路线?我该如何实施呢?

2 个答案:

答案 0 :(得分:1)

您必须确保映射到Angular视图的所有URL都由服务器上的相同路由处理(即,如果服务器收到/contact,{{1}的请求,则应返回/contact },/contact/form1等。)

答案 1 :(得分:1)

我的角度视图路线前缀为'/ partials'。它看起来像这样。

routes.MapRoute(
     "DefaultPartials",
     "partials/{controller}/{action}/{id}",
     new { id = UrlParameter.Optional});

现在请记住,这种方法会导致部分视图遍历整个页面生命周期,但我使用razor partials来定位我的页面文本,这样我的用法就可以了。

然后,我使用应用程序中的区域从Web API控制器中吐出JSON数据,以便消耗角度。让事情变得干净整洁。希望这会有所帮助。

我差点忘了。您需要将部分路由放在RouteConfig.cs中的标准默认路由之前。