我有一个类库,其中包含一个自定义 MVC 模型绑定器,用于实例化从抽象类派生的各种具体类型。模型绑定器与本文中描述的几乎相同。
在包含用于测试的 MVC Web 应用程序的同一 Visual Studio 解决方案中使用它时,它可以正常工作。
我的问题是,从程序集创建了一个 nuget 包并将其包含在一个完全独立的 MVC 应用程序中,模型绑定器不再工作,尽管已在 Global.asax.cs 中正确配置它。
在拉了一些头发之后,我直接在单独的 MVC 应用程序中重新创建了模型活页夹,并且当我这样做时,我注意到CreateModel()
活页夹中的覆盖方法受到保护。它现在被执行,我怀疑受保护的关键字与它有关,但我想有人解释一下究竟是为什么。
即使使用“本地”模型绑定器,也存在更多问题。当它执行并尝试实例化具体对象时,我得到一个异常Could not load type XXXX from assembly { separate MVC project assembly name}
,因此模型绑定器似乎无法从其自己的程序集外部加载类型。
谁能给我更多关于为什么会发生这种情况以及我可以做些什么来解决它的信息?请记住,我需要模型绑定器和模型驻留在类库中而不是 MVC 程序集中。