我不是直接寻找代码,而是寻找一些如何最好地解决我的问题的想法。
我正在处理这个 asp.net mvc 应用程序。它应该是“高度模块化的”,并且许多部分必须在不同的项目中重复使用。
我们当前的方法是使用托管可扩展性框架在运行时导入程序集。这些通常包括工作所需的一切;模型、视图和控制器。导入时会注册路线和导航/主菜单按钮。到目前为止,这有效;例如,我可以简单地将“news-column”程序集复制到任何其他项目中,包括 MEF 的东西,并且“神奇地”新项目提供可在 /News/List 访问的新闻功能。
然而,问题是,虽然在大多数情况下,程序集中提供的默认视图适合,但我有时希望导入的控制器显示不同的视图,在自定义布局中显示其他字段。我目前的方法是使模块中的操作方法虚拟化。如果另一个项目需要使用自定义视图呈现列表,我只需重写列表方法,调用基本方法来填充 ViewData,然后只需调用我想要的任何视图。但是,这不知何故感觉很脏,如果有人知道更好的解决方案,我将不胜感激。
我面临的另一个问题是我可能希望导入的模型与不同的表一起使用。我们将使用 Fluent NHibernate,其中目标表在 ClassMap - Table("News") 中定义。映射是这样导入的:
foreach(Assembly assembly in assemblies)
configuration.Mappings(m => m.FluentMappings.AddFromAssembly(assembly));
我不知道如何更改导入的映射表,但我想有一个简单的方法?
感谢您至少阅读此内容:)