cho*_*bo2 2 asp.net-mvc razor asp.net-mvc-3
我刚刚有几个关于asp.net mvc 3的问题.
我正在阅读有关剃刀的布局.
所以我认为这篇文章来自预览1,我正在使用3.0的最终版本.
当我创建一个3.0项目并查看_Layout.cshtml时
<title>@ViewBag.Title</title>
Run Code Online (Sandbox Code Playgroud)
什么是ViewBag?我听说它就像ViewData一样.
如果我听到的是对的,为什么他们这样使用它?在我列出的文章中,他们使用了
<title>@View.Title </title>
Run Code Online (Sandbox Code Playgroud)
以上是过时的还是不同的做法?
使用_ViewStart.cshtml,如果您将其中一个放在共享文件夹中,然后将其中一个放在主视图文件夹中.家庭观点中的一个将胜过共享的一个?
你能在共享文件夹中有_ViewStart.cshtml吗?
在aspx引擎中,您拥有包含内容标记的母版页.@Sections似乎相当于它.但是,如果您只需要一个内容标记(即身体),您只需使用@RenderBody?
@RenderPage用于加载部分视图还是用于不同的东西?
使用@RenderSection可选有什么不同,如果你使用的是aspx引擎,那么就不要在内容标签之间放任何东西?
如果您希望@RenderSection中的内容存储在局部视图中,会发生什么.你还可以选择它吗?
谢谢
在预发布版本中ViewBag
被调用View
.在RTM中它是ViewBag
.ViewBag相当于ViewData
唯一的区别在于它依赖于.NET 4.0动态属性,这意味着它不是ViewData["Title"]
你可以编写的ViewBag.Title
.这就是说你不应该使用这些,但有强烈类型的视图.
它已过时,无法在ASP.NET MVC 3 RTM中编译
这取决于您是在 @RenderBody()
调用_ViewStart
执行之前或之前将其放在正在呈现的主视图的文件夹结构中.如果在Home文件夹中找到视图,则将执行Home\_ViewStart.如果在共享文件夹中找到视图,则将执行Shared\_ViewStart.
否
是,但只有在正在执行的视图位于"共享"文件夹中时才会执行.
是
@RenderPage
与@Html.Partial
允许您包含局部视图相同.这是个人喜好的问题.它来自WebPages,而Html.Partial是一种自MVC早期版本以来一直存在的扩展方法.
澄清:在MVC中你应该只使用@Html.Partial
它,因为它经历了解析视图等所有MVC步骤
如果某个部分是可选的,则无需在内容页面中对其进行定义.与在aspx视图引擎中放置空内容相同.
???
是否有第三方图书馆有更多的HTML助手?
是的,MVCContrib,WebHelpers,......
必读:ASP.NET MVC 3:使用Razor进行布局和部分