我想使用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 }
);
}
}
}
我希望我的联系页面(位于/contact
)ng-view
div默认为类似(例如)form.html
,并且有一些链接可以加载{{ 1}},form2.html
等等。但是将这些链接指向像form3.html
这样的东西完全搞砸ASP.Net的路线?我该如何实施呢?
答案 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中的标准默认路由之前。