在继承自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'的定义,并且没有可以找到接受类型'CreateModel'的第一个参数的扩展方法'Model'(您是否缺少using指令或装配参考?)
从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>