Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何使用ASP.NET MVC中强制/应用的属性调用控制器操作?_Asp.net Mvc_Controller_Actionfilterattribute - Fatal编程技术网

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()方法应用属性过滤器。