我有一个控制器返回部分视图,然后将其用作Angular 2 templateUrl。
例如:
角度组件:
public class PartialsController : Controller
{
public IActionResult Index()
{
return PartialView();
}
}
控制器:
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 2仍然可以从控制器获取html的方式配置路由,但是在浏览器中手动键入地址(www.abc.com/partials/index)会返回默认值控制器或"未找到"而不是局部视图?
这是当前路线配置:
{{1}}
" angular" Angular路由需要路由才能使用浏览器中的复制粘贴地址。
答案 0 :(得分:0)
您可以编写一个动作过滤器来处理这种情况。
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();
}
}