gpt4 book ai didi

c# - ASP.NET MVC 3 RC - Razor "View"属性

转载 作者:太空狗 更新时间:2023-10-29 23:18:45 26 4
gpt4 key购买 nike

只是在今天发布的 ASP.NET MVC 3 RC 中使用 Razor。

现在,我们有了“布局页面”的概念,我认为它是 ASPX View 引擎中“View Master”的替代品。

但是我不明白布局页面的“View”属性。

这是创建新 Razor View 时创建的示例:

_Layout.cshtml

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

...

MyView.cshtml

@model Mvc3FunParty.Models.Post

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

这导致“Some Title”被插入到 <title> 中呈现的 HTML 的标记。

这究竟是如何运作的?当我将鼠标悬停在“View”属性上时,它的类型为“dynamic”。

那么这个属性究竟应该用来做什么呢?我们可以在里面塞东西吗?这应该是 ViewData 的 Razor 实现吗?

如果是这样,它不应该是“ViewDataDictionary”类型吗?为什么 View 属性的“动态”类型?

最佳答案

View 属性是 ViewData 属性的别名。也就是说下面的代码

View.Title

相当于

ViewData["Title"]

这通过使用 .NET 4 中引入的 C# 语言的新“动态”功能来实现。基本上,它允许您使用迄今为止静态类型的语言编写后期绑定(bind)代码。如果您想了解更多信息,网上有很多资源。

ViewData 属性仍然可用,您可以交替使用两者。它们都使用相同的后备存储,因此以一种方式所做的更改将以另一种方式可用。

使用View 的好处是语法更简洁。缺点是您没有获得 IntelliSense 支持。

之所以可以在 View 页面中设置 View.Title 并在布局页面中显示正确的值,是因为 Razor 页面的呈现顺序。我们称之为由内而外的渲染,这意味着您的 View 页面首先被执行,它的 HTML 输出被收集到缓冲区中,然后布局页面被执行,缓冲的 View 页面输出被注入(inject)到您调用 RenderBody 的地方

关于c# - ASP.NET MVC 3 RC - Razor "View"属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4141631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com