为什么我们不能通过Model属性访问asp-for中的PageModel派生类的属性?

问题描述 投票:0回答:1

在继承自CreateModel的代码隐藏类PageModel中,我有Movie属性如下。

[BindProperty]
public Movie Movie { get; set; }

Movie有很多属性,例如Title等。

在Razor页面中,标记帮助程序访问Movie.Title,如下所示。

<label asp-for="Movie.Title" ></label>
<input asp-for="Movie.Title" />
<span asp-validation-for="Movie.Title" ></span>

Question

为什么我们不能通过Movie.Title访问Model如下?

<label asp-for="Model.Movie.Title" ></label>
<input asp-for="Model.Movie.Title" />
<span asp-validation-for="Model.Movie.Title" ></span>

根据我的理解,Model是访问视图和控制器之间交换的所有内容的“入口点”,我知道Razor页面只是MVC的一个子集。

Edit

错误消息:

严重级代码描述项目文件行抑制状态错误CS1061'CreateModel'不包含'Model'的定义,并且没有可以找到接受类型'CreateModel'的第一个参数的扩展方法'Model'(您是否缺少using指令或装配参考?)

c# asp.net razor asp.net-core
1个回答
1
投票

this page describing Tag Helpers,当你向下滚动找到@符号的用法时,它用于表示“代码的开始”,所以你只需要修改你的行来添加它:

<label asp-for="@Model.Movie.Title" ></label>
<input asp-for="@Model.Movie.Title" />
<span asp-validation-for="@Model.Movie.Title" ></span>
© www.soinside.com 2019 - 2024. All rights reserved.