首页 文章

有关asp.net mvc 3中Razor引擎的问题

提问于
浏览
2

我刚刚有几个关于asp.net mvc 3的问题 .

我正在读关于layouts with razor .

所以我认为这篇文章来自预览1,我正在使用3.0的最终版本 .

  • 当我创建一个3.0项目并查看_Layout.cshtml时,它有
<title>@ViewBag.Title</title>

什么是ViewBag?我听说它就像ViewData一样 .

  • 如果我听到的是对的,为什么他们这样使用它?在我列出的文章中,他们使用了
<title>@View.Title </title>

以上是过时的还是不同的做法?

  • 如果您将其中一个放在共享文件夹中,然后将其中一个放在主视图文件夹中,则使用_ViewStart.cshtml . 家庭观点中的一个将胜过共享的一个?

  • 你能在共享文件夹中使用_ViewStart.cshtml吗?

  • 在aspx引擎中,您有包含内容标记的母版页 . @Sections似乎相当于它 . 但是,如果您只需要一个内容标记(即身体),您只需使用@RenderBody?

  • @RenderPage用于加载部分视图还是用于不同的东西?

  • 使用@RenderSection有什么区别可选,如果你使用的是aspx引擎,只是不在内容标签之间放任何东西?

  • 如果您希望@RenderSection中的内容存储在局部视图中,会发生什么 . 你还可以选择它吗?

不是特定于asp.net mvc 3

  • 第三方图书馆是否有更多的html助手?

谢谢

1 回答

  • 5
    • 在预发布版本中, ViewBag 被称为 View . 在RTM中它是 ViewBag . ViewBag相当于 ViewData ,唯一的区别在于它依赖于.NET 4.0动态属性,这意味着您可以编写 ViewBag.Title 而不是 ViewData["Title"] . 这就是说你不应该使用这些,但有强烈类型的视图 .

    • 它已过时,无法在ASP.NET MVC 3 RTM中编译

    • 这取决于您是在@RenderBody()调用之后还是之前放置它
      _ViewStart execution执行任何正在呈现的主视图的文件夹结构 . 如果在Home文件夹中找到视图,则将执行Home \ _ViewStart . 如果在共享文件夹中找到视图,则将执行Shared \ _ViewStart .

    • 没有
      是的,但只有在正在执行的视图位于“共享”文件夹中时才会执行 .

    • 是的

    • @RenderPage@Html.Partial 相同,允许您包含部分视图 . 这是个人喜好的问题 . 它来自WebPages,而Html.Partial是一种自MVC早期版本以来一直存在的扩展方法 .
      澄清:在MVC中你应该只使用 @Html.Partial ,因为它经历了解析视图等所有MVC步骤

    • 当一个部分是可选的时,您不需要在内容页面中定义它 . 与在aspx视图引擎中放置空内容相同 .

    • ???

    第三方图书馆是否有更多的html助手?

    是的,MVCContribWebHelpers,......

    必读:ASP.NET MVC 3: Layouts and Sections with Razor

相关问题