ASP.NET MVC предоставляет метод расширения для проверки того, является ли запрос запросом Ajax.Вы можете использовать его, чтобы решить, хотите ли вы вернуть частичное представление или результат json вместо обычного представления.
if (Request.IsAjaxRequest())
{
return PartialView("name");
}
return View();
Чтобы ограничить метод действия только вызовами Ajax, вы можете написать собственный атрибут.В случае обычного запроса этот фильтр вернет исключение http 404 not found.
[AttributeUsage(AttributeTargets.Method)]
public class AjaxOnlyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.HttpContext.Response.StatusCode = 404;
filterContext.Result = new HttpNotFoundResult();
}
else
{
base.OnActionExecuting(filterContext);
}
}
}
Вы можете использовать его следующим образом:
[AjaxOnly]
public ActionResult Index() {
// do something awesome
}