存储库是Nothing,但在ASP.Net MVC 3中稍后(正确)(使用Unity,存储库)添加到容器中

时间:2011-09-01 10:15:35

标签: asp.net asp.net-mvc vb.net asp.net-mvc-3 design-patterns

我有一个“MenuService”,它使用“MenuRepository”。

创建MenuService时,它会正确加载MenuRepository。 然后它想要将它保存在UnityControllerFactory中,但MenuService中的MenuRepository是Nothing(之前不是)。

很奇怪。

有谁知道为什么会这样?

其他一些信息: 我正在使用Unity和Repository模式。 问题发生在部分视图(对于菜单),我已经包含在“HomeController”中,它可能是相关信息,所以我包括了这个,以防万一:

Function Menu() As ActionResult
    Return PartialView("~\Views/Shared/_Menu.vbhtml", _MenuService.GetAllMenuItems)
End Function

另外,我的部分“菜单”视图是这样的: 〜/ _Menu.vbhtml

@ModelType IEnumerable(Of FacturatieMVCv2.Domain.Slave.MenuItem)

@*<div id="myslidemenu" class="jqueryslidemenu">*@
<ul>

@For Each Item In Model.Where(Function(el) IsNothing(el.HasHigherMenuItem))
@<li> @Html.ActionLink(Item.Naam,Item.Action,Item.Controller)
  <ul>
@For Each SubItem In Model.Where(Function(el) el.HasHigherMenuItem.MenuItemID.Equals(Item.MenuItemID))
      @<li>
            @Html.ActionLink(SubItem.Naam,SubItem.Action,SubItem.Controller)
      </li>
    Next
      </ul>                               
</li>
Next
</ul> 

我用以下方式调用部分视图:

@Html.Action("Menu","Home")

1 个答案:

答案 0 :(得分:1)

您需要在应用程序启动之前设置IoC,并且需要从IoC获取服务。

article会对您有所帮助。

我在这种情况下,服务中的存储库依赖关系将由IoC(Unity)

解决