¿Cómo puedo evitar que se cargue una vista parcial escribiendo http://mydomain.com/site/edit/1 ¿Hay alguna forma de hacerlo?Impedir vista parcial desde la carga
/Martin
¿Cómo puedo evitar que se cargue una vista parcial escribiendo http://mydomain.com/site/edit/1 ¿Hay alguna forma de hacerlo?Impedir vista parcial desde la carga
/Martin
Si carga sus parciales a través de Ajax a continuación, se puede comprobar si la cabecera HTTP solicitud HTTP_X_REQUESTED_WITH
está presente y su valor es igual a XMLHttpRequest
.
Cuando se hace una solicitud a través del navegador de cabecera no está presente
Aquí es una aplicación muy sencilla de un filtro de atributo de acción que hace el trabajo para usted
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" };
}
}
}
Puede utilizarlo para decorar cualquier acción en la que desea comprobar si la petición es una petición ajax
[HttpGet]
[CheckAjaxRequest]
public virtual ActionResult ListCustomers() {
}
creo el atributo [ChildActionOnly]
es lo que estás buscando para.
[ChildActionOnly]
public ActionResult Edit(int? id)
{
var item = _service.GetItem(id ?? 0);
return PartialView(new EditModel(item))
}
Phil Haack tiene un artículo usarlo here
Estoy seguro que hace lo que se supone que debe hacer, pero este dosent funciona cuando hago una llamada ajax para obtener la vista parcial. –
ChildActionOnly no impide el uso de la solicitud Ajax: "Cualquier método marcado con ChildActionOnlyAttribute solo se puede llamar con los métodos Action o RenderAction HTML extension". . Lea http://msdn.microsoft.com/en-us/library/system.web.mvc.childactiononlyattribute(v=vs.118).aspx – RolandoCC
¿Me puede mostrar cómo me gustaría hacer esto? –
bueno, no importa, lo encontré Request.Headers.Get ("X-Requested-With"); o) –
Por favor, eche un vistazo a mi edición de respuestas para detalles de implementación :) – Lorenzo