gpt4 book ai didi

asp.net-mvc-3 - 使用 MVC 3 依赖注入(inject)和 Ninject 2.2 将全局操作过滤器绑定(bind)到区域中的所有 Controller

转载 作者:行者123 更新时间:2023-12-04 22:36:31 27 4
gpt4 key购买 nike

由于我在此 post 中获得的帮助,我能够使用 ASP.NET MVC 3 和 Ninject 2.2 将记录器对象注入(inject)到自定义 ActionFilterAttribute 中。 .

现在我想将我的自定义 ActionFilterAttribute 仅绑定(bind)到特定区域中的所有 Controller 。

我能够开始使用以下绑定(bind),但它只处理某个区域的一个 Controller 。我希望我的代码绑定(bind)到特定区域中的所有 Controller 。有任何想法吗?

/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ILogger>().To<Log4NetLogger>().InRequestScope();
kernel.BindFilter<TestLoggingAttribute>(
FilterScope.Controller, 0)
.WhenControllerType<OrganizationController>();
}

最佳答案

这对我有帮助,谢谢达林。但是, context.RouteData.Values 没有适合我的区域,但 context.RouteData.DataTokens["area"] 有!同样在我的情况下,我的 Controller 不在特定区域(例如共享 Controller ),因此我必须检查数据 token 区域是否为空。这对我有用:

kernel
.BindFilter<TestLoggingAttribute>(FilterScope.Controller, 0)
.When((context, ad) => context.RouteData.DataTokens["area"] != null && context.RouteData.DataTokens["area"] == "Organization");

关于asp.net-mvc-3 - 使用 MVC 3 依赖注入(inject)和 Ninject 2.2 将全局操作过滤器绑定(bind)到区域中的所有 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5479066/

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