【发布时间】:2013-12-17 13:41:36
【问题描述】:
在我看来,我有一个下拉列表。下拉列表有 5 个选项。最后一个选项是“自定义”。当这个被选中时,将显示两个文本框。
我的模特:
public class ReportModel
{
public DateType DateType { get; set; }
public List<TypeDTO> DateTypesDTO { get; set; }
[RequiredIfTrue("Custom", ErrorMessage = "Dit veld is verplicht")]
public DateTime? CustomDateFrom { get; set; }
[RequiredIfTrue("Custom", ErrorMessage = "Dit veld is verplicht")]
public DateTime? CustomDateTo { get; set; }
public bool Custom { get; set; }
}
我的部分观点:
<div class="control-group">
<label class="control-label">Tijdsinterval</label>
<div class="controls">
@Html.DropDownListFor(m => m.DateType, new SelectList(Model.DateTypesDTO, "DateType", "Translation"), new { id = "timespan", name = "timespan" })
</div>
</div>
<div class="control-group hide" id="custom">
<label class="control-label">Van</label>
<div class="controls controls-margin">
<div class="input-append datetimepicker">
@Html.TextBoxFor(m => m.CustomDateFrom, new { id = "datetimepicker", @class = "add-on", type = "text", data_format = "dd-MM-yyyy hh:mm" })
@Html.ValidationMessageFor(m => m.CustomDateFrom)
@Html.HiddenFor(m => m.Custom);
</div>
</div>
<label class="control-label">Tot</label>
<div class="controls controls-margin">
<div class="input-append datetimepicker">
@Html.TextBoxFor(m => m.CustomDateTo, new { id = "datetimepicker", @class = "add-on", type = "text", data_format = "dd-MM-yyyy hh:mm" })
@Html.ValidationMessageFor(m => m.CustomDateTo)
</div>
</div>
</div>
<script>
$(function () {
$('#partial-view').on('change', '#timespan', function () {
if ($(this).val() == 'Custom') {
$('#custom').show();
} else {
$('#custom').hide();
}
});
});
</script>
问题在于控制器中if (ModelState.IsValid) 始终为真,即使两个文本框为空。我做错了什么?
【问题讨论】:
-
您在哪里将“自定义”设置为 true?
-
我不再这样做了。我首先在 JQuery 中的 onchange 函数中执行此操作,但随后出现
Model= null 的异常。我不知道在哪里做这个。 -
if ($(this).val() == 'Custom') { $('#custom').show(); @Model.Custom = true; }else { $('#custom').hide(); @Model.Custom = false; } -
ReportModel 类中没有“DateType”属性。
-
对不起。我没有显示所有代码,因为并非所有代码都是相关的。我忘了显示 DateType。
标签: c# asp.net asp.net-mvc validation