Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC PartialView with List

I am at my first MVC project. I want to create a page with a header and in this header to be placed a partial view with category list.

This is what I did so far: I created the master page (_Home.cshtml). Than in Shared folder I created a View (Category.cshtml). See my picture. enter image description here

My Category.cshtml content:

@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>

}

My master page file:

@{
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>

When I run the project I got the error:

enter image description here

I know that is a newbie question but it's my first MVC project. Thanks!

like image 922
POIR Avatar asked Feb 12 '14 13:02

POIR


People also ask

Can we use multiple partial view in MVC?

Thank you for answer but there is no multiple partial.

How do you call a partial view in another view in MVC?

To create a partial view, right click on the Shared folder -> click Add -> click View.. to open the Add View popup, as shown below. You can create a partial view in any View folder. However, it is recommended to create all your partial views in the Shared folder so that they can be used in multiple views.

Can partial view have layout?

Partial views shouldn't be used to maintain common layout elements. Common layout elements should be specified in _Layout. cshtml files. Don't use a partial view where complex rendering logic or code execution is required to render the markup.


2 Answers

Solution 1

If you want to use partial view you need to pass model to this helper this way

@Html.Partial("Category", CategoryModel)

before you pass this model you have to fill it with some data.

Solution 2

also you can use @Html.Action() Method with name of ActionResult method which will return partial view for you.

for example:

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

  public ActionResult GetCategories() {
    // fill some data for your model here
    return PartialView("Category", model);
  }
like image 193
xurca Avatar answered Oct 13 '22 14:10

xurca


If you want to interpret those partials as some static sections inside your HTML, then I would suggest you to call Html.Action() which returns your partials:

@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);
}
like image 40
Cristian E. Avatar answered Oct 13 '22 14:10

Cristian E.