0

我有一个模型:

[Required(ErrorMessage = "Dit veld is verplicht")]
[Range(60, 60000, ErrorMessage = "De waarde moet tussen de 60 en 60000 liggen")]
public double? Kilometers { get; set; }

[Required(ErrorMessage = "Dit veld is verplicht")]
public int? Minutes { get; set; }

还有我的html:

<div class="control-group container-trigger" id="container-distance">
  <label class="control-label" for="trigger-distance">Aantal kilometers</label>
  <div id="distance" class="controls">
    @Html.TextBoxFor(m => m.Alert.Kilometers, new { id = "trigger-distance", @name = "trigger-distance" })
    @Html.ValidationMessageFor(m => m.Alert.Kilometers, "", new { @class = "error-0" })
  </div>
</div>
<div class="control-group container-trigger" id="container-minutes">
  <label class="control-label" for="trigger-minutes">Aantal minuten</label>
  <div id="minutes" class="controls">
     @Html.TextBoxFor(m => m.Alert.Minutes, new { id = "trigger-minutes", @name = "trigger-minutes" })
     @Html.ValidationMessageFor(m => m.Alert.Minutes, "", new { @class = "error-0" })
   </div>
</div>

我有一个下拉列表,如果我做出选择,我需要它来显示一个文本框。如果我选择第一个选项,它将显示一个文本框几分钟。如果我选择第二个选项,那么它将显示一个距离文本框。我所拥有的是,如果我单击提交按钮,我会收到表单中未显示的文本框的验证错误,但只有在显示时才需要它们!

我能做些什么来解决这个问题?

4

3 回答 3

1

条件验证将帮助您实现您正在寻找的东西http://foolproof.codeplex.com/

于 2013-11-07T16:27:12.400 回答
0

您已使用 [required] 属性将它们都设为必需。因此,如果您不为其中任何一个设置值,它将引发客户端验证。您必须删除“必需”属性或从 html 中删除“ValidationMessageFor”

于 2013-11-07T16:22:52.980 回答
0

我假设您正在使用 jquery 进行不显眼的验证?如果是这样,您可以使用 $.validator.defaults.ignore 属性来指定在验证期间应忽略的任何选择器,例如:

$.validator.defaults.ignore = ':disabled,:hidden,.ignore';

只需确保在此处指定与隐藏控件匹配的内容即可。

于 2013-11-07T16:23:04.530 回答