Comment puis-je empêcher le chargement d'une vue partielle en tapant http://mydomain.com/site/edit/1 Y a-t-il un moyen de le faire?Empêcher la vue partielle de se charger
/Martin
Comment puis-je empêcher le chargement d'une vue partielle en tapant http://mydomain.com/site/edit/1 Y a-t-il un moyen de le faire?Empêcher la vue partielle de se charger
/Martin
Si vous chargez votre Ajax grâce à partials, vous pouvez vérifier si l'en-tête HTTP demande HTTP_X_REQUESTED_WITH
est présente et sa valeur est égale à XMLHttpRequest
.
Lorsqu'une demande est faite par le navigateur tête n'est pas présent
Voici une application très simple d'une action attribut de filtre qui fait le travail pour vous
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" };
}
}
}
Vous pouvez l'utiliser pour décorer toute action où vous voulez vérifier si la demande est une demande ajax
[HttpGet]
[CheckAjaxRequest]
public virtual ActionResult ListCustomers() {
}
Je crois que l'attribut [ChildActionOnly]
est ce que vous cherchez pour.
[ChildActionOnly]
public ActionResult Edit(int? id)
{
var item = _service.GetItem(id ?? 0);
return PartialView(new EditModel(item))
}
Phil Haack a un article utilisant here
Je suis Bien sûr, il fait ce qu'il est censé faire, mais ce travail dosent quand je fais un appel ajax pour obtenir la vue partielle. –
ChildActionOnly n'empêche pas d'utiliser la requête Ajax: "Toute méthode marquée avec ChildActionOnlyAttribute ne peut être appelée qu'avec les méthodes d'extension Action ou RenderAction HTML." . Veuillez lire http://msdn.microsoft.com/en-us/library/system.web.mvc.childactiononlyattribute(v=vs.118).aspx – RolandoCC
Pouvez-vous me montrer comment je ferais cela? –
bien ne me dérange pas je l'ai trouvé Request.Headers.Get ("X-Requested-With"); o) –
S'il vous plaît jeter un oeil à ma réponse modifier pour les détails de mise en œuvre :) – Lorenzo