【问题标题】:Why can't we access properties of PageModel derived class in asp-for via Model property?为什么我们不能通过 Model 属性访问 asp-for 中 PageModel 派生类的属性?
【发布时间】:2018-01-03 06:20:59
【问题描述】:

在继承自PageModel 的代码隐藏类CreateModel 中,我有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>

问题

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

<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 指令或程序集引用?)

【问题讨论】:

  • 你有什么错误吗?
  • 我认为最好在问题中添加错误,这样会增加获得答案的机会!
  • 您可以尝试使用@,例如&lt;label asp-for="@Model.Movie.Title" &gt;&lt;/label&gt; 他们三个?基于Introduction to Tag Helpers in ASP.NET Core
  • 当然 :) 很高兴我能帮上忙。

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


【解决方案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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 2019-11-15
    相关资源
    最近更新 更多