代码之家  ›  专栏  ›  技术社区  ›  RPM1984

ASP.NET MVC 3 RC-Razor“视图”属性

  •  5
  • RPM1984  · 技术社区  · 15 年前

    在今天发布的ASP.NET MVC 3 RC中,只需使用剃须刀就可以了。

    现在,我们有了一个“布局页”的概念,我认为这是ASPX视图引擎中“视图主控形状”的替换。

    但是我不理解布局页面的“视图”属性。

    下面是创建新Razor视图时创建的示例:

    _布局.cshtml

    <html>
    <head>
       <title>@View.Title</title>
    

    我的视图.cshtml

    @model Mvc3FunParty.Models.Post
    
    @{
       View.Title = "Some Title";
       Layout = "~/Views/Shared/_Layout.cshtml";
    }
    

    结果“某些标题”被插入到 <title> 呈现的HTML的标记。

    这到底是怎么回事?当我将鼠标悬停在“View”属性上时,它的类型为 动态 “。

    那么这个属性究竟应该用于什么呢? 我们能在里面塞点什么吗?这应该是ViewData的Razor实现吗?

    如果是这样的话,它不应该是那种 视图数据字典 “?为什么? 动态 “视图属性的类型?

    2 回复  |  直到 12 年前
        1
  •  1
  •   Liam Joshua    12 年前

    是的,“视图”是真的 ViewData 他们在使用 dynamic 这样就有了你看到的语法( View.Title )

    它翻译成

    ViewData["Title"]
    

    在MVC中有很多这样的小金块,特别是在MVC 3中,它们会让你困惑:)。

        2
  •  4
  •   marcind    15 年前

    这个 View 属性是的别名 ViewData 属性。这意味着下面的代码

    View.Title
    

    等于

    ViewData["Title"]
    

    这是通过使用.NET 4中引入的C语言的新的“动态”特性来实现的。基本上,它允许您用静态类型语言编写后期绑定代码。如果你想了解更多,网上有很多资源。

    这个 视图数据 属性仍然可用,您可以同时使用Interchangeable。它们都使用相同的备份存储,因此一种方式所做的更改将以另一种方式可用。

    使用的优势 视图 更简洁的语法。缺点是您无法获得IntelliSense支持。

    你可以设置的原因 View.Title 在视图页面中,布局页面中显示的正确值取决于Razor页面的呈现顺序。我们称之为“内-外”呈现,这意味着首先执行视图页,将其HTML输出收集到缓冲区中,然后执行布局页,在调用的位置注入缓冲视图页输出。 RenderBody .