返回View时应该是PartialView会发生什么?

时间:2016-05-13 19:11:55

标签: asp.net-mvc view asp.net-mvc-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);

我不是在寻找我的引导程序停止工作的具体原因,而是更多地解释......为什么这会引起一般问题?

1 个答案:

答案 0 :(得分:2)

除非您明确指定Layout为null,否则当您执行return View("StatsPanel")时,Razor视图引擎将呈现布局内的视图内容(_Layout.cshtml),类似于您呈现页面的方式。这意味着,它将包括所有这些脚本和Css再次在头部。这可能是它弄乱你的标记的原因。

在您的用例中使用PartialView()方法似乎是合适的。如果您仍想使用View()方法,则可以在StatsPanel.cshtml视图中明确将布局定义为null

@{ Layout = null; }