2016-05-13 6 views
0

В представлении я вызываю действие, которое возвращает представлениеЧто происходит, когда вы возвращаете View, когда должен быть PartialView?

Вид:

Html.RenderAction("Read", "Stats", new { Module = statsModel.Module, Name = statsModel.Name }); 

Контроллер:

public ActionResult Read(Module module, string name, bool showStatsItems = true) 
    { 
     eRPortalEntities db = new eRPortalEntities(); 
     StatsPanelService service = new StatsPanelService(db, UserID); 
     StatsPanelViewModel spv = service.Read(module, name); 
     spv.ShowStatsItems = showStatsItems; 

     return View("StatsPanel", spv); 
    } 

К сожалению, это вызывает некоторые из моих Bootstrap функциональности сломаться. Например, выпадающие списки и модалы не переключаются.

Если вместо этого у меня есть контроллер возвращает PartialView, все работает, как ожидалось

return PartialView("StatsPanel", spv); 

Я не ищу для конкретной причины, почему мой самозагрузки перестал работать, но больше объяснения ... Почему бы это вызывает проблемы вообще?

ответ

2

Если вы явно не указываете Layout равным нулю, то когда вы делаете return View("StatsPanel"), механизм просмотра Razor отобразит содержимое представления в макете (_Layout.cshtml), аналогично тому, как вы визуализируете страницу по нормали. Это означает, что он будет включать все эти сценарии & Css в разделе главы снова. Это может быть причиной того, что он испортил вашу разметку.

Использование PartialView() способ кажется уместным в вашем случае использования. Если вы все еще хотите использовать метод View(), вы можете явно определить макет как нулевой в вашем StatsPanel.cshtml, как показано на рисунке

@{ Layout = null; }