Я нахожу много вопросов и ответов по этой теме, но ни один из них не является исчерпывающим.
Мне нужно простое частичное представление, которое получает параметр 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>
но когда я открываю основное представление, частичное представление отображается, но без данных, при отладке я вижу, что его конструктор контроллера и метод индекса не срабатывают
@Html.Partial()
не вызывает метод контроллера. Вам нужно использовать@Html.Action("Index", "TitleBar", new { idAttivita = 1 })
для вызова метода и отображения его частичного представления в основном представлении. - person   schedule 18.05.2016Index.cshtml
в/Views/TitleBar
- если хотите использовать_TitleBarView
, то используйтеreturn View("_TitleBarView", tbVM);
- person   schedule 18.05.2016