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

时间:2018-01-03 06:20:59

标签: c# asp.net razor asp.net-core

在继承自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>

问题

为什么我们无法通过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的一个子集。

修改

错误消息:

  

严重级代码描述项目文件行抑制状态   错误CS1061'CreateModel'不包含'Model'的定义,也没有扩展方法'Model'接受类型'CreateModel'的第一个参数(你是否缺少using指令或汇编引用?)

1 个答案:

答案 0 :(得分: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>