2014-02-12 61 views
5

我在我的第一个MVC项目。我想创建一个带有标题的页面,并在这个标题中放置一个带有分类列表的局部视图。ASP.NET MVC PartialView与列表

这是我到目前为止所做的: 我创建了母版页(_Home.cshtml)。比在共享文件夹中我创建了一个视图(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项目。 谢谢!

+0

你需要传递'Model'与此调用'@ Html.Partial( “类别”)'。您应该调用此模型生成的Controller/Action,然后返回该部分。 –

+0

你在你的行动中做了什么?你应该在你的控制器中渲染局部视图 – Ehsan

+0

你确定吗?在我的项目中,我没有更多他展示的东西。我没有传递任何额外的数据,调用控制器,返回部分和一切工作 – szpic

回答

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

解决方案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); 
    }