【发布时间】:2019-03-25 19:19:27
【问题描述】:
我是 .NET 的新手(我来自 Java 和 Spring 框架),我对 Razor 页面有以下疑问。
我有一个非常简单的页面,如下所示:
@model Vidly.Models.Customer
@{
ViewBag.Title = Model.Name;
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>@Model.Name</h2>
第一行声明此页面使用的模型对象类型为 Vidly.Models.Customer(它包含视图中使用的数据),实际上我访问并显示了 的值>Vidly.Models.Customer.Name 属性来自:
<h2>@Model.Name</h2>
我的疑惑与之前代码的这一段有关:
@{
ViewBag.Title = Model.Name;
Layout = "~/Views/Shared/_Layout.cshtml";
}
它到底在做什么?
我认为它声明了某种对象,其中包含 2 个属性,这些属性表示类似于此视图页面的设置(如果我的断言错误,请纠正我)。
通过这一行,它声明了页面布局是什么:
Layout = "~/Views/Shared/_Layout.cshtml";
但是这行到底是什么意思:
ViewBag.Title = Model.Name;
什么是ViewBag?这个设置是什么意思? Model.Name 应包含传递的模型对象内的 Name 属性的值。到底在做什么?
【问题讨论】:
-
找到
_Layout.cshtml并查看 head 标签中的内容。可能是它使用视图包来设置页面标题 -
什么是view bag也被回答了很多次stackoverflow.com/questions/34209201/what-is-inside-viewbag
-
一般用于在控制器和视图之间传递少量数据
-
顺便说一句,由于没有一个答案解决了这个问题,语法
@{ ... Stuff here... }没有定义一个对象,而是一段 c# 代码。您可以定义变量、设置属性、调用方法等,而不必在每一行前面加上 Razor@(实际上,有些事情您不能没有这种语法,例如声明或分配变量)跨度>