带MV的ASP.NET MVC PartialView

时间:2014-02-12 13:37:15

标签: c# asp.net-mvc list partial-views

我是第一个MVC项目。我想创建一个带有标题的页面,并在此标题中放置一个带有类别列表的局部视图。

这是我到目前为止所做的: 我创建了母版页(_Home.cshtml)。比在共享文件夹中我创建了一个View(Category.cshtml)。看我的照片。 enter image description here

我的Category.cshtml内容:

@model IEnumerable<ArtSchool.Models.Category>
<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
    <th>
        @Html.DisplayNameFor(model => model.Name)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Visible)
    </th>
    <th></th>
</tr>

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.Name)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Visible)
    </td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
        @Html.ActionLink("Details", "Details", new { id=item.ID }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.ID })
    </td>
</tr>

}

我的母版页文件:

@{
Layout = null;
}

<!DOCTYPE html>

 <html>
 <head>
<meta name="viewport" content="width=device-width" />
<title>_Home</title>
</head>
<body>
<div>

    @Html.Partial("ASCX/Header")

    @Html.Partial("Category")

    @RenderBody()
</div>

当我运行项目时,我收到错误:

enter image description here

我知道这是一个新手问题,但这是我的第一个MVC项目。 谢谢!

2 个答案:

答案 0 :(得分:6)

解决方案1 ​​

如果你想使用局部视图,你需要以这种方式将模型传递给这个助手

@Html.Partial("Category", CategoryModel)

在通过此模型之前,您必须填写一些数据。

解决方案2

你也可以使用@Html.Action()方法和ActionResult方法的名称,它将返回部分视图。

例如:

  @Html.Action("GetCategories", "ControllerName")

  public ActionResult GetCategories() {
    // fill some data for your model here
    return PartialView("Category", model);
  }

答案 1 :(得分:2)

如果您想将这些部分解释为HTML中的某些静态部分,那么我建议您调用Html.Action()来返回您的部分内容:

@Html.Action("GetPageHeader","Home")
@Html.Action("GetPageCategories","Home")

的HomeController

[HttpGet]
public ActionResult GetPageHeader()
{
   return PartialView(@"~/Views/Shared/_PageHeader.cshtml");
}

[HttpGet]
public ActionResult GetPageCategories()
{
   var categories = databaseContext.GetAllCategories(); //Get your categs
   return PartialView(@"~/Views/Shared/_Categories.cshtml",categories);
}