0

我正在使用 stock 函数在 MVC 4 Razor 视图中显示日期范围。开始/结束日期是我的模型类中过滤器的一部分。我希望开始/结束日期是可选的。

当我提交没有填写开始/结束的表单时,它会触发“必填字段”验证检查,显示这些可爱的消息:

  • 安装日期字段是必需的。
  • InstalledDateEnd 字段是必需的。

然而表单确实提交并且我的过滤器运行并返回结果。

    <script>
    $(function () {
        $("#InstalledDateStart").datepicker({
            defaultDate: "+1w",
            changeMonth: true,
            numberOfMonths: 3,
            onSelect: function (selectedDate) {
                $("#InstalledDateEnd").datepicker("option", "minDate", selectedDate);
            }
        });
        $("#InstalledDateEnd").datepicker({
            defaultDate: "+1w",
            changeMonth: true,
            numberOfMonths: 3,
            onSelect: function (selectedDate) {
                $("#InstalledDateStart").datepicker("option", "maxDate", selectedDate);
            }
        });
    });
</script>

我尝试告诉模型不需要这些字段,但没有帮助:

        [Display(Name = "Installed Date")]
    [Required(AllowEmptyStrings = true)]        
    public DateTime InstalledDateStart { get; set; }
    [Required(AllowEmptyStrings = true)]
    public DateTime InstalledDateEnd { get; set; }

这是视图中的标记:

@using (Html.BeginForm("Filter", "Search"))
{

    <div class="divSearchBlock">
        <br style="clear:left;" />
        <div>
            <b>@Html.DisplayNameFor(model => model.ConstraintModel.InstalledDateStart)</b>                
            @Html.TextBox("InstalledDateStart", null, new { @class = "divCellContent" })                
            <b>-</b>                
            @Html.TextBox("InstalledDateEnd", null, new { @class = "divCellContent" })                
        </div>

        <input type="submit" value="Submit"/> 
    </div>
}

到底是什么导致需要这些字段?

4

1 回答 1

1

DateTimes 不是字符串。所以AllowEmptyString=true没有意义。如果您希望您DateTime的 s 可以为空,请将您的模型声明为:

[Display(Name = "Installed Date")]
public DateTime? InstalledDateStart { get; set; }
public DateTime? InstalledDateEnd { get; set; }

你需要?很重要,因为没有这个,DateTime意志最终会成为DateTime.MinValue

于 2012-10-19T14:31:59.870 回答