在我看来,我有Ajax.ActionLink
@Ajax.ActionLink("Display Information", "Information"}, new AjaxOptions() { HttpMethod = "GET", UpdateTargetId = "divCurrentView", InsertionMode = InsertionMode.Replace }
)
调用替换div的局部视图。一切正常,但当我将[ChildActionOnly]
添加到局部视图时,它永远不会被执行
[ChildActionOnly]
public PartialViewResult Information()
是否有不同的方法可以同时使用Ajax.ActionLink
和[ChildActionOnly]
?
我想阻止任何人使用网址
导航到该操作答案 0 :(得分:6)
ChildActionOnlyAttribute
只能与HTML扩展方法一起使用。
ChildActionOnly
属性确保只能从视图中调用操作方法作为子方法。我们倾向于使用此属性来防止因用户请求而调用操作方法。
在您的情况下,而不是使用[ChildActionOnly]
属性使用AjaxOnly
,如下所示:
[AjaxOnly]
public PartialViewResult Information()
这是你如何制作一个
public class AjaxOnlyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if(!filterContext.HttpContext.Request.IsAjaxRequest())
filterContext.HttpContext.Response.Redirect("/error/404");
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
}
}
并像
一样使用它[AjaxOnly]
public PartialViewResult Information()