ASP .Net Core + Angular 2 路由

ASP .Net Core + Angular 2 routing

我有一个 returns 部分视图的控制器,然后用作 Angular 2 templateUrl。

例如:

Angular分量:

@Component({
    selector: 'my-app',
    templateUrl:'/partials/index',

控制器:

 public class PartialsController : Controller
    {

        public IActionResult Index()
        {
            return PartialView();
        }
    }

有没有办法配置路由,使 Angular 2 仍然可以从控制器获取 html,但在浏览器中手动输入地址(www.abc.com/partials/index) returns 是默认控制器还是 "not found" 而不是部分视图?

这是当前路由配置:

app.UseMvc(config =>
            {
                config.MapRoute(
                  name: "Default",
                  template: "{controller}/{action}/{id?}",
                  defaults: new { controller = "Home", action = "Index" }
                  );
                config.MapRoute(
                 name: "angular",
                 template: "{*anything}",
                 defaults: new { controller = "Home", action = "Index" }
                 );
            }); 

"angular" 路由需要 Angular 路由才能使用来自浏览器的复制粘贴地址。

您可以编写一个动作过滤器来处理这种情况。

 public class OnlyAjaxAttribute : ActionFilterAttribute
 {
    public OnlyAjaxAttribute()
    {

    }
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        var accepts = context.HttpContext.Request.Headers["Accept"].ToString();
        if (accepts.Contains("text/html"))
        {
            context.Result = new HttpStatusCodeResult(404);
        }
        base.OnActionExecuting(context);
    }
}
[OnlyAjax]
public class PartialsController : Controller
{

    public IActionResult Index()
    {
        return PartialView();
    }
}