【问题标题】:ASP.NET MVC PartialView with List带有列表的 ASP.NET MVC PartialView
【发布时间】:2014-02-12 13:37:15
【问题描述】:

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

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

我的 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>

当我运行项目时出现错误:

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

【问题讨论】:

  • 您需要通过此调用@Html.Partial("Category") 传递Model。您应该调用生成此模型的控制器/操作,然后返回部分。
  • 你在你的行动中做了什么??你应该在你的控制器中渲染部分视图
  • 你确定吗?在我的项目中,我没有更多他展示的东西。我没有传递任何额外的数据、调用控制器、返回部分并且一切正常
  • @szpic,你的局部视图是强类型的吗?如果是这样,那么对Model 的任何引用都会产生相同的错误。
  • @AndreiV 是的。在我的 vs 强类型中是默认的。没有复选框创建强类型等

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


【解决方案1】:

解决方案 1

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

@Html.Partial("Category", CategoryModel)

在传递这个模型之前,你必须用一些数据填充它。

解决方案 2

您也可以使用带有 ActionResult 方法名称的 @Html.Action() 方法,该方法将为您返回部分视图。

例如:

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

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

【讨论】:

    【解决方案2】:

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

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

    家庭控制器

    [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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 2012-02-05
      相关资源
      最近更新 更多