Sae*_*ati 44 asp.net-mvc aop attributes asp.net-mvc-3
我想在ASP.NET MVC中使用部分视图和AJAX调用,这是我第一次使用它.我只是想搜索一下我之前应该知道的是否有什么特别之处,而且我很好奇的是,是否有任何应该设置或与AJAX调用相关的特殊属性?像[ChildActionOnly]或的东西[HttpGet]
Muh*_*hid 79
我不认为ajax有内置属性,但创建一个属性并不太难.你可以像创建AjaxOnly过滤器一样
public class AjaxOnlyAttribute : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)
{
return controllerContext.RequestContext.HttpContext.Request.IsAjaxRequest();
}
}
Run Code Online (Sandbox Code Playgroud)
并装饰你的动作方法
[AjaxOnly]
public ActionResult ajaxMethod()
{
}
Run Code Online (Sandbox Code Playgroud)
查看这篇文章,了解实现此属性的另一种方法
小智 18
ASP.NET MVC提供了一种扩展方法来检查Request是否是Ajax请求.您可以使用它来决定是否要返回部分视图或json结果而不是普通视图.
if (Request.IsAjaxRequest())
{
return PartialView("name");
}
return View();
Run Code Online (Sandbox Code Playgroud)
要将操作方法限制为Ajax调用,只能编写自定义属性.在正常请求的情况下,此过滤器将返回404未找到的http异常.
[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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
你可以像这样使用它:
[AjaxOnly]
public ActionResult Index() {
// do something awesome
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18361 次 |
| 最近记录: |