【问题标题】:ASP.NET bind List of custom objects to dynamically generated form [duplicate]ASP.NET将自定义对象列表绑定到动态生成的表单[重复]
【发布时间】:2018-08-07 01:29:51
【问题描述】:

我今天为此苦苦挣扎,希望这篇文章对其他人有所帮助

案例

我有一个表单,它必须包含动态数量的字段,具体取决于用户输入。此表单的模型是竞赛

public int NumberOfRounds { get; set; }
public List<Round> Rounds { get; set; }

圆形模型如下所示:

public int Length { get; set; }

NumberOfRounds 字段表示竞赛包含的回合数。我使用一个简单的js script"change" event listener 来添加额外的输入字段,根据用户输入的NumberOfRoundsvalue

问题是如何将这些输入字段绑定到我的Contest 模型,以便在Round.Length 属性中获取它们的值。

【问题讨论】:

  • 我不同意这是重复的。即使是这样,另一篇帖子也太长了,而且使用了部分视图。我只是想谈谈一个我找不到简单解决方案的话题。从一个完整的 ASP.NET 菜鸟的角度来看,其他主题不是很有帮助。问题在另一个主题中涉及的事实并不意味着信息冗余。但是,如果您坚持,我可以删除此帖子。
  • @StephenMuecke 请解释一下。
  • 解释什么?你问了一个问题,我把它骗到了一个答案,它解释了如何解决你的问题的选项,并解释了每个选项的好处和限制(只有一个选项与部分视图相关)。它不仅解释了如何正确生成 html,还解释了如何解决其他基本问题,例如客户端验证,以及为集合索引器添加输入,您自己的答案甚至都没有涉及。
  • @StephenMuecke 是的,我的回答也不包括核物理讲座。那是问题吗?我问了一个具体的问题,并给出了一个具体的答案,并举了一个明确的例子。目标是从新手的角度易于阅读。一个简单的解决方案和一个简单的主题的简单问题。我要再说一遍,即使在我找到解决方案之后,阅读我所谓的“重复”的原件也会让我头疼。我可以看到它是如何相关的,但完全重复?我不这么认为。
  • 不,不。重复也不错(除了一些琐碎的情况,即使是最基本的谷歌也会给出答案)——它们可以帮助用户找到其他有用的相关答案。跨度>

标签: asp.net-mvc dynamic entity-framework-6 model-binding


【解决方案1】:

密钥位于HTML 标记的name 属性中。在我的View 的顶部,我定义了@model Contest。这会将 View 的上下文设置为 Contest 对象。现在我们可以使用name 属性将输入值绑定到相应的模型属性。

我推荐这个article 作为一个很好的阅读模型绑定到列表属性。还有这个topic 了解更多具体信息。

在我们的例子中,我们有一个List&lt;Round&gt; Rounds 属性。我们如何将单个输入绑定到每个Round.Length。很简单:

<input ... name="Rounds[{index}].Length"

其中 {index}Rounds 列表中的位置,用于保存当前输入的 value。诚然,这很简单,但我认为这个问题的一个清晰示例对新手非常有用。希望对你有帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-17
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    相关资源
    最近更新 更多