2012-05-10 45 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")