2012-05-24 28 views
7

我知道有几个问题已经回答,但我没有找到与我的具体内容有关的内容案件。以下部分已定义,但尚未呈现布局页面“〜/ Views/Shared/_Layout.cshtml”

我正在使用MVC4的移动功能。所以我创建了一个_layout.mobile.cshtml和相应的视图。

上面的错误发生在我使用移动设备时。正如你所看到的,它试图显示常规_layout.cshtml而不是_layout.mobile.cshtml。所以我假设它也试图显示没有问题部分的视图(比如Index.mobile.cshtm)。基本上它是将常规布局与移动视图混合在一起。

这不会一直发生。如果我再循环池,它会再次运行一段时间,然后突然它又回到出现错误,它会继续,直到我再次循环池。

有没有人见过这个问题之前,可以摆脱一些光?

感谢 约翰

+0

同样的问题,你用@RenderSection( “sectionName”,要求:假的)? – archil

+0

是的,我愿意。它实际上是在启动新的MVC4项目时创建的默认布局。 @RenderSection(“精选”,必填:false)。当然,我认为当它尝试使用错误的布局时,问题就开始了。 –

+0

所以我多了点信息。我错了,它并不是用移动视图呈现“桌面”布局。这是相反的方式。它使用“桌面”视图渲染移动版面。 –

回答

3

_ViewStart.cshtml视图文件夹下,改变布局价值,你的自定义布局。我想,这可能帮助。(请确保您正在返回查看,而不是局部视图)例如

@{ 
Layout = "~/Views/Shared/_layout.mobile.cshtml"; 
} 

在情况下,如果你想改变布局特定页面,您可以明确定义它在页面顶部作为页面指令。

3

在index.cshtml中,在原始布局文件“_LayoutHome.cshtml”中定义了一个未定义在新引导布局中的部分。

具体为:@RenderSection("featured", required: false)

因此,解决办法是,要么添加本节进行到新的布局(看它在原来的布局和粘贴),或简单地从index.cshtml删除。

0

另一种方法是在_ViewStart.cshtml页面中使用条件块。例如,根据设备的常规用户,您可能有两种布局。使用伪代码的设备/浏览器类型位的阅读,它会是这个样子:

@{ 
     if(userIsMobile) 
     { 
      Layout = "~/Views/Shared/_MobileLayout.cshtml"; 
     } 
     else 
     { 
      Layout = "~/Views/Shared/_Layout.cshtml"; 
     } 
} 

我已经使用这个显示或根据需要为不同类别的用户隐藏部分或菜单项;它也应该适用于特定于设备的布局。

乔伊摩根

2

我也面临着我删除

@section featured { 

从查看

相关问题