2014-02-12 101 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); 
    }