【问题标题】:ASP.NET Razor - Binding multiple properties and forms in one PageModelASP.NET Razor - 在一个 PageModel 中绑定多个属性和表单
【发布时间】:2019-08-23 19:18:58
【问题描述】:

我对在 Microsoft Visual Studio 中工作非常陌生,我按照文档设置了一个新的 Razor Web 应用程序,现在我想将一些在多个页面上分开的操作组合起来。

例如,我想在 PageModel 上使用“注册”视图、“登录”视图和“忘记密码”视图,但在尝试组合所有“OnPostAsync”方法时(使用页面处理程序和不同的名称) 表单相互干扰,ModelState 总是无效的。

我也在尝试将“更改密码”视图与“更新配置文件”视图结合起来,但我又遇到了同样的问题。

难道不能使用 Razor 实现这样的目标吗?这似乎不太可能是真的。

【问题讨论】:

  • 表单的第一个问题可以解决,但是您需要共享您的代码,以便我们可以看到它有什么问题。第二个问题的答案是否定的,使用 Razor Pages 可以实现这样的事情。请再次分享您的代码,以便我们提供帮助。

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


【解决方案1】:

可以将多个不同的表单发布到同一页面,但除非它们都共享相同的模型,否则不建议这样做。否则,正如您似乎发现的那样,一个表单的属性为 [Required] 而不是另一个表单会导致验证问题。

如果您必须开始在 PageModel 的设计上妥协以适应多个表单,这应该表明您确实需要为表单提供单独的页面。您可能通过减少 UI 中的重复而获得的任何好处都将因验证等的额外复杂性而丢失。

【讨论】:

  • 我不能将一个页面模型用于多个 Post 功能,这似乎有点奇怪。除非这里可能有一些误解?无论哪种方式,我都找到了一种解决方法,即为我想要组合的这些特定页面模型使用嵌套的 _Layout。
  • 正如我所说,您可以将多个表单发布到同一页面。他们可以共享同一个PageModel。你的问题很笼统,我提供了一个笼统的答案。如果您在尝试做某事时遇到特定问题,您应该发布一些代码,以便其他人可以复制该问题并提供一些指导。
猜你喜欢
  • 2021-05-14
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-03
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
  • 2018-03-18
相关资源
最近更新 更多