【问题标题】:ASP.NET MVC - Dynamic Forms ValidationASP.NET MVC - 动态表单验证
【发布时间】:2013-11-29 11:36:31
【问题描述】:

我正在将 ASP.NET WebForms 应用程序升级到 ASP.NET MVC。现有应用程序的功能之一是它具有动态表单生成器。每个表单都有步骤(使用在 Wizard_Init 事件中动态添加的向导控件)和验证(使用验证控件)。

我已经有一些静态 MVC 表单,我在模型属性上使用数据注释属性,然后使用内置的非侵入式验证来验证表单。

现在说我有以下模型:

public class Form {
    public string Name { get; set; }
    public IList<Step> Steps { get; set; }
}

public class Step {
    public string Name { get; set; }
    public IList<Field> Fields { get; set; }
}

public class Field {
    public string Name { get; set; }
    public bool IsRequired { get; set; }
}

显然这些字段是动态的,所以我不能使用数据注释属性。此外,我只想验证每个步骤。我认为的一个选项是呈现表单中的所有步骤,并在单击下一个/上一个时使用 javascript 显示/隐藏适当的步骤。但是我再次看不到如何为此添加验证。另一种选择是使用 Ajax 在每个步骤中加载,但我再次为这个概念苦苦挣扎。

如果有人能提供帮助,我将不胜感激。理想情况下,我希望获得有关实现此目标的最佳方法的建议,而不是链接到旧的第三方库,除非它是自 ASP.NET MVC 3 以来构建的。谢谢

【问题讨论】:

  • 添加一些视图代码为你编辑它并为你添加动态验证。

标签: asp.net-mvc forms validation dynamic


【解决方案1】:

我认为在你的情况下最好的办法是创建你自己的验证脚本。它并不难,也不复杂,你只能解决必要的事情。所以在我看来,只需使用 js 来隐藏、显示和验证您自己的脚本。 (只验证未隐藏的字段。)

【讨论】:

  • 谢谢,我知道这是如何工作的。我猜我必须渲染整个表单,然后使用 javascript 隐藏/显示适当的步骤。
  • 这是可能的。您也可以只在 html 代码中进行内联样式(style="display:none;"),这不是那么漂亮,但性能更高
【解决方案2】:

如果字段是动态的,并不意味着您不能进行验证。

您可以通过将模型分解为更小的部分并将验证添加到每个较小的模型来使验证动态化。

【讨论】:

  • 谢谢,但我看不出这是如何工作的,因为模型实际上是动态的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-29
  • 1970-01-01
  • 2012-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多