【发布时间】:2010-11-10 05:55:56
【问题描述】:
只是在今天发布的 ASP.NET MVC 3 RC 中使用 Razor。
现在,我们有了“布局页面”的概念,我认为它是 ASPX 视图引擎中“视图主控”的替代品。
但我不明白布局页面的“视图”属性。
这是创建新 Razor 视图时创建的示例:
_Layout.cshtml
<html>
<head>
<title>@View.Title</title>
...
MyView.cshtml
@model Mvc3FunParty.Models.Post
@{
View.Title = "Some Title";
Layout = "~/Views/Shared/_Layout.cshtml";
}
这会导致“某些标题”被插入到呈现的 HTML 的 <title> 标记中。
这到底是如何工作的?当我将鼠标悬停在“视图”属性上时,它的类型为“dynamic”。
那么这个属性到底应该用来做什么呢? 我们可以在里面塞东西吗?这应该是 ViewData 的 Razor 实现吗?
如果是这样,它不应该是“ViewDataDictionary”类型吗?为什么 View 属性使用“动态”类型?
【问题讨论】:
-
另外,在旁注中 - 有人遇到过智能感知问题吗?我使用 Resharper,但检查了 VS2010 中的设置(语句完成)。当我做
Model.时,我得到了智能感知,但没有像我打字那样。 -
除非您定义模型的类型(通过
@model MyModel),否则模型属性将被键入为动态(至少在 C# 中) -
此外,Razor 工具并不总是适用于 Resharper。
-
是的,我正在使用@model MyModel(如问题所示)。 Model 是对象 Post 的强类型。所以这不是问题。但是,如果我键入 Model.Po .. 我会得到任何包含“Po”的属性的智能感知。我必须按 CTRL+。为拿到它,为实现它。哦,好吧,我猜总比没有好。 :)
-
对于任何关心的人,Razor 智能感知是 Resharper 的一个错误:blogs.jetbrains.com/dotnet/2010/11/… 很快就会有一个修复 - 现在,CTRL-Space。 :(
标签: c# asp.net-mvc-3 viewdata razor