假设我的 WebAPI 中有几个控制器和操作。此外,我还有自定义属性,我想在某些控制器或操作中应用。通常要做到这一点,我将使用该属性修饰所需的Controller或其Actions。
我的问题是: 在MVC 5中有什么方法让我从UI端进行装饰,例如从浏览器选择某些属性可以应用于某些控制器或操作?
我知道我可以使用 Swagger / Swashbuckle 来遍历我的所有控制器并将它们暴露给用户。另外,我已经编写了自定义属性。
有人能指出我可以帮助我解决这个问题的任何方向吗?
我想可能有一个解决方案涉及覆盖 BaseController ,以便每个新创建的派生BaseController的控制器都使用我的自定义属性进行修饰。
答案 0 :(得分:0)
我不知道开箱即用的解决方案。 但它仍然可以解决。
我正在寻找可能的解决方案:
首先一个是让所有过滤器决定是应该应用还是跳过它。 这种方法很混乱。它将要求您在开始时应用所有过滤器,在这种情况下,将始终调用所有过滤器(至少用于检查条件)。
第二个一个是实现您自己的FilterProvider,它将返回应用过滤器的集合(例如,通过某些条件)(here is an article with a simple example)。 我会推荐这种方法,因为它看起来更清晰,每次请求只需要一次调用,以确定应该应用/调用哪些过滤器。
无论如何,两者都需要一些UI页面来配置所有这些过滤器,你需要在某处存储所有这些配置(创建至少三个DB表:Controller,Action和Filter)。这些存储的信息将用于完成所有这些工作。
我希望它会有所帮助。