0

我尝试在 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")

但是当我运行我的项目时,我得到了一个例外

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

任何人建议我我可以称其为局部视图

4

2 回答 2

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

采用:

@Html.Partial("Index","TreeMenu")
于 2012-05-10T08:16:31.603 回答
0

将操作更改为

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

在 _layout 页面中

@Html.Action("Index","TreeMenu")
于 2012-05-10T09:00:22.077 回答