我一起使用autofac和MVC来允许我自动解析视图模型。虽然我有一个问题需要在解析后为每个视图模型调用一个Initializable方法,但这很有效。
我只是在autofac中挂钩OnActivated方法解决了这个问题。
这里唯一的问题是在MVC将其参数绑定到视图模型中的属性之前调用Initialize方法,因此导致部分初始化。
我可以通过在我的自定义ModelBinder的OnModelUpdated覆盖中添加调用(从autofac中删除)到Initialize来解决这个问题,尽管现在如果我在MVC绑定之外创建一个视图模型,它就不会调用initialize。
我能看到的唯一解决方案是在两个地方都有它,Autofac(OnActivated)和我的模型绑定器(OnModelUpdated),这对于任何想法肯定都会有巨大的性能影响吗?
答案 0 :(得分:0)
我没有足够的回复点来评论,所以我在这里问,我想知道你是否需要在GET和/或POST上调用初始化,如果两者都是为什么?通常我有GET的初始化,因为它可能意味着我们预先填充了一些属性。虽然POST有来自您的信息,您可能会对其执行某些操作。
我考虑过两个解决方案:
1)保持简单并从action方法调用initialise方法。如上所述,我是针对GET请求而不是针对POST执行此操作,但没有理由说明如果您需要这样做,则无法做到这两点。
2)由于您正在使用Autofac,您可以使用自定义动作调用程序并将其注册到Autofac。那将同时为您提供DI +模型绑定,因此您现有的活动创意应该有效。代码可以在我的问题here中找到。