Asp.net mvc 如何使用ASP.NET MVC中强制/应用的属性调用控制器操作?
当我尝试从另一个控制器操作(方法)中调用特定的控制器操作(方法)时,已应用于我正在调用的操作的属性不会被应用/强制 例如,如果我有一个控制器动作,其中应用了一些属性,如下所示:Asp.net mvc 如何使用ASP.NET MVC中强制/应用的属性调用控制器操作?,asp.net-mvc,controller,actionfilterattribute,Asp.net Mvc,Controller,Actionfilterattribute,当我尝试从另一个控制器操作(方法)中调用特定的控制器操作(方法)时,已应用于我正在调用的操作的属性不会被应用/强制 例如,如果我有一个控制器动作,其中应用了一些属性,如下所示: [Authorize] [HttpPost] public ActionResult SaveUsers(List<User> users) { .. } [授权] [HttpPost] 公共操作结果保存用户(列表用户){..} 然后我从另一个控制器动作调用这个动作,属性不会被执行/强制 MVC似乎在其默
[Authorize]
[HttpPost]
public ActionResult SaveUsers(List<User> users) { .. }
[授权]
[HttpPost]
公共操作结果保存用户(列表用户){..}
然后我从另一个控制器动作调用这个动作,属性不会被执行/强制
MVC似乎在其默认的“ActionInvoker”实现中管理这些ActionFilterAttribute/ActionMethodSelectorAttribute的执行,但不幸的是,当您直接使用ActionInvoker时,它不会返回action方法的结果,而只是调用该动作并直接写入响应流
我的目标是:
我成功地完成了1和3,但没有完成2。您可以尝试显式地通过ActionInvoker。这是正常执行操作的对象,但它由MVC管道调用。在源代码操作中,执行以下操作:
this.ActionInvoker.InvokeAction(this.ControllerContext, "TargetActionName");
这可能有效,但将操作名称作为字符串引入,这不是一件好事。为什么需要在另一个控制器上调用操作?如果你需要这样做,你可能需要把一些常见的行为考虑到一个模型中。我想看看你尝试这样做的方法,只是为了确保这不是一个乱七八糟的问题。我也有同样的问题。我的用例是这样的:在我的SPA页面中调用HandleUnknownAction方法,因为我的路由是用Javascript编写的。我在这里调用默认方法Index().ExecuteResult。但是HandleUnknownAction不执行控制器上的任何过滤器。所以我需要一种方法来为Index()方法应用属性过滤器。