0

ストック関数を使用して、MVC4Razorビューに日付範囲を表示しています。開始日/終了日は、私のモデルクラスのフィルターの一部です。開始日/終了日をオプションにしたい。

開始/終了を入力せずにフォームを送信すると、「必須フィールド」検証チェックがトリガーされ、次の素敵なメッセージが表示されます。

  • [インストール日]フィールドは必須です。
  • 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意味がありません。をnull許容にしたい場合はDateTime、モデルを次のように宣言します。

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

?これがないとDateTimeDateTime.MinValue

于 2012-10-19T14:31:59.870 に答える