Частичное представление и передача данных в макет MVC3 - PullRequest
3 голосов
/ 14 июля 2011

Я хочу показать категории для всех страниц, используя макет и вот мой путь: вот моя модель (NewsCategoriesModel)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;


namespace GiaoXuKeSat.Models
{
    public class NewsCategoriesModel
    {
        public int NewsCategoriesID { get; set; }
        public string NewsCategoriesName { get; set; }
    }
}

Here Partialview (_NewsCategories)

@using System.Linq;


@using System.Linq;
@model IEnumerable<GiaoXuKeSat.Models.dms_NewsCategory>

@foreach (var item in Model) {
  <ul id="dmsMenuULUL">
     <li>@item.NewsCategoriesName</li>
</ul>     
}

и я печатаю это частичное представление в макет

@Html.Partial("_NewsCategories");

но я получил ссылку на объект, не установленную для экземпляра объекта. на

@foreach (var item in Model) {

1 Ответ

7 голосов
/ 14 июля 2011

Вам нужно передать модель, которая нужна вашему частичному виду.Такие как.

@Html.Partial("_NewsCategories", Model.NewsItems);

Если вы опускаете модель, вы просто передаете текущую модель представления в свой партиал.Вы также можете использовать ViewBag.

Если вы вызываете Partial со страницы мастера / макета, маловероятно, что ваша модель будет доступна на каждой странице.Таким образом, в этом случае лучше создать контроллер / действие, которое возвращает модель вашего элемента новостей в частичное представление, а затем вызвать с помощью ...

@Html.Action("NewsCategories", "NewsController");

, которая затем запустит указанное действие и отобразитчастичное представление, которое вызывает действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...