Если вы загружаете свои партиалы через Ajax, вы можете проверить, присутствует ли HTTP-заголовок запроса HTTP_X_REQUESTED_WITH
, и его значение равно XMLHttpRequest
.
Когда через браузер делается запрос о том, что заголовок отсутствует
Вот очень простая реализация атрибута Action Filter, который сделает всю работу за вас
public class CheckAjaxRequestAttribute : ActionFilterAttribute
{
private const string AJAX_HEADER = "X-Requested-With";
public override void OnActionExecuting( ActionExecutingContext filterContext ) {
bool isAjaxRequest = filterContext.HttpContext.Request.Headers[AJAX_HEADER] != null;
if ( !isAjaxRequest ) {
filterContext.Result = new ViewResult { ViewName = "Unauthorized" };
}
}
}
Вы можете использовать его для оформления любого действия, где вы хотите проверить, является ли запрос запросом ajax
[HttpGet]
[CheckAjaxRequest]
public virtual ActionResult ListCustomers() {
}