【问题标题】:Model property not being passed back to OnPost method from Razor Page (Core)模型属性未从 Razor 页面(核心)传递回 OnPost 方法
【发布时间】:2021-06-05 01:35:21
【问题描述】:

我对使用 EF Core 的 Razor Pages 很陌生,遇到了一些问题。

我有一个名为 Entry 的模型,它有一些属性...

在Entry/Edit 类中,在OnGetAsync() 方法中,我正在填充Entry 模型以传递给View。您可以在此处看到 FishSpeciesId 字段与其他属性一起填充。没事:

在我的应用程序中,该值被很好地传递并按预期显示:

在不更改任何内容的情况下,我单击提交按钮将模型传递回OnPostAsync() 方法,模型条目中的所有属性都按预期填充,除了 FishSpecies 和 FishSpeciesId。

还有什么我可以检查的,看看为什么我会看到这个特定的值从 Entry 模型中退出?非常感谢任何建议。

【问题讨论】:

    标签: entity-framework .net-core razor-pages


    【解决方案1】:

    首先确保您在剃须刀页面模型中使用 [BindProperty] 模型作为 Entry 类。 像这样:

    [BindProperty]
    public EntryViewModel EntryModel { get; set; }
    

    接下来确保您在回发中需要的属性已绑定并在您的 .cshtml 文件中使用。

    【讨论】:

    • 谢谢马吉德。我有带有 [BindProperty] 标记的 Entry 类,并相信属性已绑定,因为页面加载时值按预期显示。除了突出显示的值之外,所有值都在帖子中返回......非常困惑。
    • 请在此处分享您的 .cshtml 文件。
    • 我刚刚发现似乎有一些 Javascript 启动并导致了这个问题。我需要找出确切的内容,但是当我从 cshtml 输入(由某些 Javascript 使用)中删除名称和 id 时,这些值就可以通过了。我会进一步调查并更新。
    【解决方案2】:

    我发现(尚未确认这是否是“事情”)我似乎无法将名称标签应用到 cshtml 文件的输入控件上。

    当我删除 name 属性(我认为它在 Javascript 中使用 - 但实际上不是)时,一切正常:

    我可以在 GetPostAsync() 上看到我的 FishSpecies 值

    我很想知道是否有其他人注意到这一点,或者更熟悉 Razor 页面的工作原理来解释这里发生了什么?

    【讨论】:

      猜你喜欢
      • 2021-06-18
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 2020-10-15
      • 1970-01-01
      • 2021-10-25
      • 2020-08-19
      • 2022-01-12
      相关资源
      最近更新 更多