2012-05-10 49 views
0

我尝试在MVC 3,创建数据驱动的菜单,这样我完成了下面的代码:创建MVC一个局部图3

型号:

#region MenuTree 
    public class MenuTree : BusinessObject 
    { 

     #region Constructor 
     public MenuTree() 
     { 

     } 
     #endregion 

     #region Property 
     #region ParentID 
     private int _nParentID; 
     public int ParentID 
     { 
      get { return _nParentID; } 
      set { _nParentID = value; } 
     } 
     #endregion 
     #region MenuName 
     private string _sMenuName; 
     public string MenuName 
     { 
      get { return _sMenuName; } 
      set { _sMenuName = value; } 
     } 
     #endregion 
     #region LinkText 
     private string _sLinkText; 
     public string LinkText 
     { 
      get { return _sLinkText; } 
      set { _sLinkText = value; } 
     } 
     #endregion 
     #region ActionName 
     private string _sActionName; 
     public string ActionName 
     { 
      get { return _sActionName; } 
      set { _sActionName = value; } 
     } 
     #endregion 
     #region ControllerName 
     private string _sControllerName; 
     public string ControllerName 
     { 
      get { return _sControllerName; } 
      set { _sControllerName = value; } 
     } 
     #endregion 
     #endregion 

     #region Functions 
     public MenuTree Get(int MenuTreeID) 
     { 
      return MenuTreeService.Instance.Get(new ID(MenuTreeID)); 
     } 

     public ID Save() 
     { 
      return MenuTreeService.Instance.Save(this); 
     } 
     public void Delete() 
     { 
      MenuTreeService.Instance.Delete(ID); 
     } 
     #endregion 
    } 

控制器部分:

public class TreeMenuController : Controller 
     { 
      // 
      // GET: /TreeMenu/ 

      public ActionResult Index() 
      { 
       return View(MenuTrees.Gets()); 
      } 

     } 



view : 



@model ESimSolMVC05.Models.MenuTrees 
@{ 
    ViewBag.Title = "Index"; 
} 


<table> 
    <thead> 
    <tr> 
     <th> ID </th> 
     <th> ParentID</th> 
     <th> Menu Name</th>  
    </tr> 
    </thead> 
    <tbody> 

    @foreach (ESimSolMVC05.Models.MenuTree item in Model) 
    { 
    <tr> 
     <td>@Html.DisplayFor(modelItem => item.ObjectID)</td> 
     <td>@Html.DisplayFor(modelItem => item.ParentID)</td> 
     <td>@Html.DisplayFor(modelItem => item.MenuName)</td>  
    </tr> 

    } 
</tbody> 
</table> 

然后我尝试在_layout中使用以下代码将我的视图视为部分视图:

@Html.Partial("~/Views/TreeMenu/index.cshtml") 

但是当我运行我的项目时,我得到一个异常

我的异常消息是:对象引用未设置为对象的实例。

的任何一个建议我我我可以调用一个局部视图

+0

Gets方法定义在哪里? MenuTrees课程是什么? –

+0

MenuTrees是Collection类,它包含一个MenuTree列表,它是我的Model。注意:如果我用我的视图作为普通视图,而不是成功的。但作为局部视图,它不起作用! –

+0

您称之为Html.Partial的主视图的模型是什么? –

回答

0
public PartialViewResult Index() 
{ 
    return PartialView(MenuTrees.Gets()); 
} 

使用:

@Html.Partial("Index","TreeMenu") 
+0

返回PartialView(MenuTrees.Gets());对? – Timeless

+0

@null,是的是的.. – Mediator

0

变化行动来

public ActionResult Index() 
{ 
    return PartialView(MenuTrees.Gets()); 
} 

在_layout页

@Html.Action("Index","TreeMenu")