asp.net-mvc – 我的剃刀视图的自定义基页类型,如何使用城堡windsor自动装配属性?
|
我的基页看起来像: namespace ASDF.Mvc.ViewEngines.Razor
{
public abstract class WebViewPage<TModel> : System.Web.Mvc.WebViewPage<TModel>
{
public ISomeHelper SomeHelper { get; set; }
}
}
我的观点/ web.config <system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory,System.Web.Mvc,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="ASDF.Mvc.ViewEngines.Razor.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
我怎样才能使用Castle连接SomeHelper. 现在回来是null,我已经连接了ISomeHelper,并且我的控制器/存储库/服务类的工作正常. 我猜这个WebViewPage是在我的容器无法访问的地方调用的(比如在控制器级别). 我如何让它工作? 解决方法关于依赖注入这样的自定义网页的第一件事是你不能使用构造函数注入.很遗憾,我希望他们在未来的版本中能够改进这一点.原因是实现它的实际类是由ASP.NET引擎在运行时动态发出的.所以我们目前只能使用属性注入. 因此,一种可能性是使用自定义IDependencyResolver.不幸的是IDependencyResolver doesn’t play nice with Castle Windsor.例如,与Ninject相比,本来就是小菜一碟.您所要做的就是使用[Inject]属性修饰SomeHelper属性: [Inject]
public ISomeHelper SomeHelper { get; set; }
并且它将由Ninject自动连接,因为它使用自定义IDependencyResolver.我担心温莎你必须手动这样做.因此,您可以在Global.asax中公开您的容器,然后: public abstract class WebViewPage<TModel> : System.Web.Mvc.WebViewPage<TModel>
{
protected WebViewPage()
{
SomeHelper = MvcApplication.WindsorContainer.Resolve<ISomeHelper>();
}
public ISomeHelper SomeHelper { get; set; }
}
我知道这很糟糕,但我担心这是严酷的现实.或者转换到Ninject?它在ASP.NET MVC 3及其IDependencyResolver中发挥得非常好. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 使用ASP.NET MVC3中的JavaScriptSerializer转义引号
- 即使控件被隐藏,ASP.NET中的验证仍然会激活吗?
- asp.net-core – 在ASP.NET Core 2.0中哪里可以找到System.
- asp.net – SignalR不再工作“找不到包含OwinStartupAttrib
- ASP.NET会话超时测试
- asp.net-mvc – 在运行时ASP.NET捆绑和缩小有什么好处?
- asp.net-mvc-4 – 在ASP.NET MVC4 WebAPI中实现ETag支持
- asp.net-web-api2 – SwashBuckle / Swagger – OAuth资源所
- asp.net-mvc – MVC5:@ Html.TextBoxFor(或EditorFor)可以
- asp.net-mvc – 如何阻止用户在MVC3应用程序上登录/注册和其
- asp.net – jQuery AJAX vs. UpdatePanel
- 如果DataSource不包含任何项目,如何在ASP.NET C#
- .net – Castle Windsor有没有什么缺点?
- asp.net-mvc – 不显着的验证不工作在动态添加的
- asp.net-mvc-3 – 造型ASP.NET MVC验证错误?
- ASP.NET GridView CommandField作为TemplateFiel
- 从代码隐藏调用ASP.NET Web API
- MVC3中的IValidatableObject – 客户端验证
- asp.net-mvc – 如何获取视图html并返回客户端
- asp.net – 我可以覆盖web.config中的连接字符串
