c# – 具有ChildActionOnly属性问题的部分视图
发布时间:2020-12-15 19:56:14 所属栏目:百科 来源:网络整理
导读:我有部分视图由 jquery呈现,我想使用 jquery刷新视图.这是我的代码的样子. div id="left"input type="button" id="refresh" value="refresh" / @Html.Partial("_LeftColumn",new ColumnViewModel { Attempt= DateTime.Now })/divscript type="text/javascrip
我有部分视图由
jquery呈现,我想使用
jquery刷新视图.这是我的代码的样子.
<div id="left"> <input type="button" id="refresh" value="refresh" /> @Html.Partial("_LeftColumn",new ColumnViewModel { Attempt= DateTime.Now }) </div> <script type="text/javascript"> $('#refresh').click(function () { $.ajax({ type: "post",dataType: "html",url: 'Home/LeftColumnData',data: {},success: function (response) { $('#left').html(response); } }); }); </script> 在控制器动作中,我这样写了 [ChildActionOnly] public PartialViewResult LeftColumnData() { var Column= new ColumnViewModel { Attempt= DateTime.Now }; return PartialView("_LeftColumn",Column); } 我不希望用户直接从浏览器请求ColumnData,除非通过ajax,但是这种方法我得到下面的错误. 我该怎么做才能删除ChildActionOnly属性并允许直接请求查看? 解决方法
你可以使用AjaxOnly
[AjaxOnly] [HttpPost] public ActionResult LeftColumnData() { var Column= new ColumnViewModel { Attempt= DateTime.Now }; return PartialView("_LeftColumn",Column); } 这是你如何制作一个 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 ActionResult AjaxActionMethod() { .... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |