многоразовое частичное представление с его контроллером в asp MVC

Я нахожу много вопросов и ответов по этой теме, но ни один из них не является исчерпывающим.

Мне нужно простое частичное представление, которое получает параметр int, передает его контроллеру, который запрашивает базу данных, получает всю информацию о записи и передает ее для просмотра, чтобы отобразить ее.

также в представлении должна быть кнопка для создания отчета пользователю (через iTextSharp)

Мне нужно использовать этот частичный вид на многих страницах.

Это часть моего фактического контроллера частичного просмотра

Public class TitleBarController : Controller
    {
        private IUnitOfWork uow;

        // GET: MVC/TitleBar
        public ActionResult Index(int idAttivita)
        {
            TitleBarViewModel tbVM =  Mapper.Map<Attivita, TitleBarViewModel>(uow.Attivita.Read(idAttivita));
            return View(tbVM);
        }

        public TitleBarController(IUnitOfWork uow)
        {
            this.uow = uow;
        }       
    }

вот как я вставляю частичный вид в основной вид:

@Html.Partial("_TitleBarView", new ViewDataDictionary { { "idAttivita", 1 } });)

и это первая часть частичного просмотра:

@model ProgettoAttivitaUI.Areas.MVC.Controllers.Shared.TitleBar.TitleBarViewModel

<div>
    <h4>Prova</h4>
    <hr />
    <dl class="dl-horizontal">
        <dt>
            Codice attività
        </dt>

        <dd>
            @Html.DisplayFor(model => model.IdAttivita)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.Descrizione)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.Descrizione)
        </dd>

    </dl>
</div>

но когда я открываю основное представление, частичное представление отображается, но без данных, при отладке я вижу, что его конструктор контроллера и метод индекса не срабатывают


person gt.guybrush    schedule 18.05.2016    source источник
comment
@Html.Partial() не вызывает метод контроллера. Вам нужно использовать @Html.Action("Index", "TitleBar", new { idAttivita = 1 }) для вызова метода и отображения его частичного представления в основном представлении.   -  person    schedule 18.05.2016
comment
используйте ajax для вызова контроллера для отображения частичной страницы   -  person anand    schedule 18.05.2016
comment
я получаю представление «Индекс» или его мастер не найден, или механизм просмотра не поддерживает искомые местоположения. Были обысканы следующие места:   -  person gt.guybrush    schedule 18.05.2016
comment
Значит вы не создали представление Index.cshtml в /Views/TitleBar - если хотите использовать _TitleBarView, то используйте return View("_TitleBarView", tbVM);   -  person    schedule 18.05.2016
comment
вот почему он всегда называл их индексными :D. еще раз спасибо.   -  person gt.guybrush    schedule 18.05.2016