为什么.net7中views里加上@page,下面的ViewData["Title"] = "Privacy Policy";会报错
时间: 2023-07-06 14:29:35 浏览: 199
在.NET Core 3.1及以上版本中,如果在视图文件中使用@page指令,则必须将该文件命名为PageModel文件,并且必须在Pages文件夹中。如果您在Views文件夹中使用@page指令,则会导致错误。
另外,在PageModel文件中,您可以使用PageContext属性来设置ViewData["Title"]的值,而不需要在View中设置。例如:
```
public class PrivacyPolicyModel : PageModel
{
public void OnGet()
{
ViewData["Title"] = "Privacy Policy";
}
}
```
这样,在PrivacyPolicy.cshtml中就不需要设置ViewData["Title"]了,因为它会从PageModel中继承。
相关问题
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>@ViewData["Title"] - Furion</title> </head> <body> @RenderBody() </body> </html>
这段代码看起来像是一个 Razor 视图引擎中的布局页。它使用了 HTML5 的 `<!DOCTYPE html>` 声明,并包含了 `<html>`、`<head>`、`<meta>`、`<title>` 和 `<body>` 等标签。
其中 `@ViewData["Title"]` 是 Razor 视图引擎中的语法,表示从视图数据中获取名为 `Title` 的值,并将其作为页面的标题。`@RenderBody()` 则表示将子视图(也称为内容页)的 HTML 内容渲染到布局页中。
具体来说,当我们创建一个新的布局页时,可以使用以下代码:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewData["Title"] - Furion</title>
</head>
<body>
@RenderBody()
</body>
</html>
```
这样,我们就可以在子视图中使用 `@{ Layout = "_Layout"; }` 来指定该视图使用 `_Layout.cshtml` 布局页。在子视图中,我们可以通过以下代码来设置页面标题:
```html
@{ ViewData["Title"] = "Home"; }
<!-- 子视图的 HTML 代码 -->
```
这样,子视图就会使用 `_Layout.cshtml` 中定义的布局,并将页面标题设置为 "Home - Furion"。
阅读全文