68 asp.net-mvc layout razor asp.net-mvc-3
为什么我Layout = null;在我看来 - 它仍然拉入默认布局?!
是否有一些技巧可以阻止它这样做?
这是我没有布局的视图:
@{
Layout = "";
}
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
@{Html.RenderAction("Head", "Header");}
</head>
<body>
<div>
Home
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是渲染输出!!
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link href="/Content/Site.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="/Scripts/modernizr-1.7.min.js" type="text/javascript"></script>
</head>
<body>
header
</body>
</html>
</head>
<body>
<div>
Home
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
小智 125
我认为这 :
@{
Layout = "";
}
Run Code Online (Sandbox Code Playgroud)
与此不一样:
@{
Layout = null;
}
Run Code Online (Sandbox Code Playgroud)
我使用第二个它正在工作,不包括_Viewstart.
SLa*_*aks 35
你(和KMulligan)是误解_ViewStart页面.
_ViewStart在您的页面开始之前将始终执行.
它旨在用于初始化属性(例如Layout); 它通常不应包含标记.(因为没有办法覆盖它).
正确的模式是创建一个单独的布局页面来调用RenderBody,并将Layout属性设置为指向此页面_ViewStart.
然后Layout,您可以更改内容页面,更改将生效.
小智 19
我认为使用个人"视图"更好的工作,我试图从PHP转向MVC4,它真的很难但我正确的方式......
回答你的问题,如果你要处理单个页面,只需编辑_ViewStart.cshtml即可
@{
Layout = null;
}
Run Code Online (Sandbox Code Playgroud)
如果你遇到CSS路径的一些问题,另一个提示......
在网址前加上"../"
这是我今天遇到的两个问题,我就这样解决了!
问候;
Eri*_*ips 17
用于确定视图是否应该使用布局的逻辑不应该在_viewStart也不是View.设置默认值_viewStart很好,但在视图/ viewstart中添加任何布局逻辑可防止在其他任何地方使用该视图(使用或不使用布局).
您的控制器操作应该:
return PartialView()
Run Code Online (Sandbox Code Playgroud)
通过在视图中放置这种类型的逻辑,您可以打破M(数据),V(可视),C(逻辑)中的单一责任原则规则.
DMu*_*gan 11
你在这个目录中有_viewstart.cshtml吗?当我尝试使用_viewstart时,我遇到了同样的问题.然后我将它重命名为_mydefaultview,将其移动到views/shared目录,并切换到在我不想要的cshtml文件中指定视图,并为其余部分指定_mydefaultview.不知道为什么这是必要的,但它有效.
| 归档时间: |
|
| 查看次数: |
93576 次 |
| 最近记录: |