Asp.net 呈现不带布局的Ajax页面请求,但保持子布局完整

Asp.net 呈现不带布局的Ajax页面请求,但保持子布局完整,asp.net,ajax,asp.net-mvc-4,Asp.net,Ajax,Asp.net Mvc 4,我有一个相对较小的网站,使用嵌套布局 _Layout.cshtml包含网站的总体布局 标题 菜单 内容 页脚 我希望通过Ajax加载内容,但同时保持网站能够在没有URL的情况下导航。如果我在控制器中检查调用是否为Ajax,并返回ParvialView,则它不会呈现视图可能使用的_subLayout.cshtml。如果我正常渲染它,那么它当然会包括_subLayout.cshtml,但也包括_Layout.cshtml 如何使视图在Ajax调用时不加载_Layout.cshtml,而是加载_s

我有一个相对较小的网站,使用嵌套布局

_Layout.cshtml包含网站的总体布局

  • 标题
  • 菜单
  • 内容
  • 页脚
我希望通过Ajax加载内容,但同时保持网站能够在没有URL的情况下导航。如果我在控制器中检查调用是否为Ajax,并返回ParvialView,则它不会呈现视图可能使用的_subLayout.cshtml。如果我正常渲染它,那么它当然会包括_subLayout.cshtml,但也包括_Layout.cshtml


如何使视图在Ajax调用时不加载_Layout.cshtml,而是加载_subLayout.cshtml,同时保持非Ajax调用的_Layout.cshtml呈现完好无损?

稍等片刻,我当然可以在应用_布局之前在_subLayout中执行Request.IsAjaxRequest()。解决了这个问题

if(!Request.IsAjaxRequest())
{
    Layout = "~/Views/Shared/_Layout.cshtml";
}