Ove*_*d D 6 asp.net-mvc dependency-injection inversion-of-control
在MVC 3中,我了解您可以创建自定义WebViewPages.你能使用构造函数注入通过IOC容器注入依赖项吗?
Rem*_*oor 10
Brad Wilson的博客文章中有一个关于视图注入的示例http://bradwilson.typepad.com/blog/2010/07/service-location-pt3-views.html
视图中其他视图允许构造函数注入不完全正确.是IDependencyResolver可以创建具有构造函数参数的视图.但除非你实现自己的视图引擎,否则这对你没有任何帮助.像razor这样的现有视图引擎将要求您具有无参数构造函数.这意味着您只能使用它们对视图进行属性注入.
但正如其他人所说,无论如何你都不应该看注射.您的视图应该是愚蠢的,只需将视图模型呈现为HTML.任何需要依赖的东西都应该在控制器或服务中完成.
无法执行构造函数注入.但你可以用Ninject做这样的事情:
public abstract class CustomViewBase<TModel> : WebViewPage<TModel> where TModel : class
{
[Inject]
public IFace Face
{
get;
set;
}
}
假设您已在Global.asax中设置了IDependencyResolver,则应正确初始化@Face属性.但是一个重要的警告:你可能无法在_Layout.cshtml中访问@Face,因为(根据Brad Wilson的说法)布局在MVC之外工作,当你尝试在布局页面中访问它时@Face将为null.
无论如何,我同意其他人的意见,认为不应该处理任何复杂的逻辑.
是的,这是可能的,但我认为这不是一个好主意.为什么在视图级别需要一些"服务"?记住关键的MVC指南 - 视图必须是愚蠢的.实际上,它应该只是用于将视图模型对象转换为HTML的某种模板,仅此而已.
| 归档时间: |
|
| 查看次数: |
2985 次 |
| 最近记录: |