我有一个单页面应用程序,它有一个MVC文件index.cshtml 由Home控制器和Index方法提供服务。所有登录,注销 和数据请求由WebAPI提供。有人可以确认我是否正在安装 我的路由正确。这就是我所拥有的:
RouteConfig.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
routes.MapRoute("DefaultRedirect",
"",
new { controller = "Home", action = "Index" }
);
routes.MapRoute(
"catchall",
url: "{*url}",
defaults: new { controller = "Home", action = "Index" });
}
WebApiConfig.cs
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: ApiControllerOnly,
routeTemplate: "api/{controller}"
);
config.Routes.MapHttpRoute(
name: ApiControllerAndId,
routeTemplate: "api/{controller}/{id}",
defaults: null, //defaults: new { id = RouteParameter.Optional } //,
constraints: new { id = @"^\d+$" } // id must be all digits
);
config.Routes.MapHttpRoute(
name: ApiControllerAction,
routeTemplate: "api/{controller}/{action}"
);
config.Routes.MapHttpRoute(
name: ApiControllerActionAndId,
routeTemplate: "api/{controller}/{action}/{id}",
defaults: null, //defaults: new { id = RouteParameter.Optional } //,
constraints: new { id = @"^\d+$" }
);
}
Global.asax中
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
WebApiConfig.CustomizeConfig(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
我不确定是第一个处理MVC路由的文件。我需要吗? 只有一条路线可以让所有东西都进入Home Controller和Index方法。
我是否应该在MVC路由中忽略那些以api开头的请求?
答案 0 :(得分:2)
您不应该将SPA页面作为index.cshtml提供服务(因为这意味着它将被编译到服务器上将为响应提供服务的相应类)
它应该作为index.html提供,并且它需要的所有数据都应该通过AJAX调用来获取服务器。