gpt4 book ai didi

asp.net-mvc - 使用过滤器执行不同的操作?

转载 作者:行者123 更新时间:2023-12-04 07:00:39 24 4
gpt4 key购买 nike

我想避免有很多 if Request.IsAjaxRequest()在我的 Controller 中。我在想,如果我可以将这个逻辑浓缩到一个 ActionFilter 中,那么在我的应用程序中采用一个约定来为可能使用 Ajax 的任何请求提供第二个操作,同时在 JavaScript 被禁用时提供一个回退是很容易的。

public ActionResult Details(int id)
{
// called normally, show full page
}

public ActionResult Details_Ajax(int id)
{
// called through ajax, return a partial view
}

我最初认为我可以做这样的事情:
public class AjaxRenameAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.RouteData.Values["action"] = filterContext.RouteData.Values["action"] + "_Ajax";

}

但这不起作用,因为要调用的操作已确定,然后处理其上的过滤器。

我真的不想在每次有人调用 Action 时都返回一个 RedirectResult ,将 Http 请求的数量翻倍似乎有点毫无意义。

是否有不同的方式将请求路由到不同的操作?或者我正在做的事情是不可取的,我应该寻找一种更好的做事方式?

干杯

最佳答案

MvcFutures 中的 AcceptAjaxAttribute 怎么样?

关于asp.net-mvc - 使用过滤器执行不同的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1901270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com