【问题标题】:How to decorate Controller/Actions with attribute from Client side如何从客户端用属性装饰控制器/动作
【发布时间】:2023-03-25 00:47:02
【问题描述】:

假设我的 WebAPI 中有多个 ControllersActions。我也有 自定义属性 我想在我的一些控制器或操作中 应用。通常要做到这一点,我会用该属性装饰所需的控制器或它们的动作。

我的问题是: 在 MVC 5 中有什么方法可以让我从 UI 端进行装饰,例如选择某些属性,这些属性可以应用于某些控制器浏览器的动作

我知道我可以使用 Swagger/Swashbuckle 来遍历我的所有控制器并将它们公开给用户。另外,我已经编写了我的自定义属性。

谁能指出任何可以帮助我解决这个问题的方向?

我想可能有一个解决方案涉及覆盖 BaseController,这样每个新创建的派生 BaseController 的控制器都可以使用我的自定义属性进行装饰。

【问题讨论】:

  • 您是否需要为每个请求启用/禁用您的自定义属性?或全局,适用于所有请求。
  • 两者都有,但主要是全球性的

标签: c# asp.net-web-api asp.net-mvc-5 attributes


【解决方案1】:

我不知道开箱即用的解决方案。 不过还是可以解决的。

我正在寻找可能的解决方案:

第一个是让您的所有过滤器决定是否应该应用或跳过它。 这种方法很混乱。它将要求您在开始时应用所有过滤器,在这种情况下,将始终调用所有过滤器(至少用于检查条件)。

第二种一种是实现您自己的 FilterProvider,它将返回应用过滤器的集合(例如,在某些条件下)(here is an article with a simple example)。 我会推荐这种方法,因为它看起来更清晰,并且每个请求只需要一次调用来确定应该应用/调用哪些过滤器。

无论如何,这两种方法都需要一些 UI 页面来配置所有这些过滤器,并且您需要将所有这些配置存储在某个地方(创建至少三个数据库表:Controller、Action 和 Filter)。这些存储的信息将用于完成所有这些工作。

我希望它会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-06
    • 2019-08-19
    • 2012-05-15
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    相关资源
    最近更新 更多