C# 如何在ASP.NETMVC4应用程序中使用角度视图?

C# 如何在ASP.NETMVC4应用程序中使用角度视图?,c#,asp.net,angularjs,asp.net-mvc-4,C#,Asp.net,Angularjs,Asp.net Mvc 4,我想使用Angular.JS实现多个联系人表单,但不确定如何防止Angular的路由干扰ASP.Net的路由 我的ASP.Net MVC 4路由如下所示(这是默认项目,稍作修改): 我希望我的联系人页面(位于/contact)ng viewdiv默认为(比如)form.html,并且有一些链接可以加载到form2.html,form3.html,但是将这些链接指向像/contact/form2这样的东西会完全破坏ASP.Net的路由吗?我应该如何实现这一点?您必须确保映射到角度视图的所有URL都

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

我的ASP.Net MVC 4路由如下所示(这是默认项目,稍作修改):


我希望我的联系人页面(位于
/contact
ng view
div默认为(比如)form.html,并且有一些链接可以加载到
form2.html
form3.html
,但是将这些链接指向像
/contact/form2
这样的东西会完全破坏ASP.Net的路由吗?我应该如何实现这一点?

您必须确保映射到角度视图的所有URL都由服务器上的相同路径处理(即,如果服务器收到对
/contact
/contact/form1
/contact/form2
等的请求,则应返回
/contact

我在角度视图管线前面加上“/partials”。看起来像这样

routes.MapRoute(
     "DefaultPartials",
     "partials/{controller}/{action}/{id}",
     new { id = UrlParameter.Optional});
现在请记住,这种方法将导致部分视图贯穿整个页面生命周期,但我使用razor partials对页面文本进行本地化,因此这对我的使用是合适的

然后,我使用应用程序中的区域从Web API控制器中吐出JSON数据,供angular使用。保持事物整洁。希望这有帮助


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

那么ASP.Net的路由应该是什么样子<代码>url:“{action}/*”(这是有效的路由吗)?还有,谢谢你的回答!我认为
{action}/{*pathInfo}
应该能起作用
{*which}
将捕获
{action}
之后的任意数量的段。在你的情况下,我会为
contact/{*pathInfo}
pattern创建一条路由。我感谢你的回答!这不符合我这里的确切用例(因为重新加载),但这在将来肯定会有帮助,并且是一种非常好的组织方式。谢谢另一个注意事项是使用razor处理角度偏分的好处。您可以为表单和客户端验证创建angularjs html帮助程序。我相信您已经发现,键入一个Angle form元素和相应的验证字段可能是一件非常麻烦的事情。Razor助手将这段时间缩短了一半,并允许您使用FluentValidation之类的验证框架。
routes.MapRoute(
     "DefaultPartials",
     "partials/{controller}/{action}/{id}",
     new { id = UrlParameter.Optional});