3

カレンダーを使用して日付を選択するために、jQuery UI によって提供される日付ピッカーを実装しました。残念ながら、日付を選択して作成ボタンをクリックすると、日付形式が無効なため、アプリケーションはエントリを保存しません。webconfig にグローバリゼーション パラメータを追加しようとしましたが、この方法ではうまくいかないようです。

jQuery の部分:

@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/jqueryui")
@Styles.Render("~/Content/themes/base/css")
<script type="text/javascript">
    $(document).ready(function () {
        $(".datepicker").datepicker({
            changeMonth: true,
            changeYear: true,

        });
    });
</script>

}

私の作成ビュー:

    @using (Html.BeginForm())
{
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>Person</legend>
        <div class="editor-label">
            First name :
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.FirstName, new { maxlength = 50 })
            @Html.ValidationMessageFor(model => model.FirstName)
        </div>
        <div class="editor-label">
            Last name :
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.LastName, new { maxlength = 50 })
            @Html.ValidationMessageFor(model => model.LastName)
        </div>
        <div class="editor-label">
            National number :
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.NumNat, new { maxlength = 11 })
            @Html.ValidationMessageFor(model => model.NumNat)
        </div>
        <div class="editor-label">
            Start date :
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.StartDate, new { @class = "datepicker" })
            @Html.ValidationMessageFor(model => model.StartDate)
        </div>
        <div class="editor-label">
            End date :
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.EndDate, new { @class = "datepicker"})
            @Html.ValidationMessageFor(model => model.EndDate)
        </div>
        <div class="editor-label">
            Distance House - Work (km) :
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.HouseToWorkKilometers)
            @Html.ValidationMessageFor(model => model.HouseToWorkKilometers)
        </div>
        <div class="editor-label">
            Category :
        </div>
        <div class="editor-field">
            @Html.DropDownList("Id_ProductPackageCategory", "Choose one ...")
            @Html.ValidationMessageFor(model => model.Id_ProductPackageCategory) <a href="../ProductPackageCategory/Create">
                Add a new category?</a>
        </div>
        <div class="editor-label">
            Upgrade? :
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Upgrade)
            @Html.ValidationMessageFor(model => model.Upgrade)
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

この問題を解決するアイデアはありますか?

編集:日付形式を変更して「dd/mm/yy」形式にすると、「フィールド StartDate は日付でなければなりません」という検証エラーが表示されます。形式を「mm/dd/yy」形式に変更すると、「フィールド StartDate は日付でなければなりません」という別の検証エラーが表示されます。

4

4 に答える 4

3

おそらく、モデルのフォーマットを次のように変更できます。

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy}")]
public DateTime StartDate { get; set; }

編集:

または、コードを他の回答からこれに更新します。

    $(".datepicker").datepicker({ 
   changeMonth: true,
   changeYear: true,
   dateFormat: 'dd-mm-yy' 
});
于 2013-03-14T15:34:02.363 に答える
1

日付の形式を指定できます。形式を使用したサンプルについては、次のようなものを試してくださいdd/MM/yyyy

$(".datepicker").datepicker({ 
   changeMonth: true,
   changeYear: true,
   dateFormat: 'dd/MM/yyyy' 
});

日付を選択すると、テキスト ボックスの値がこの形式で表示され、投稿に送信されます。

于 2013-03-14T15:19:24.503 に答える
0

これが役に立ちますように、Global.asax ファイルの現在のカルチャをアプリケーション レベルで変更できます。たとえば、

using System.Globalization;
using System.Threading;

protected void Application_BeginRequest(Object sender, EventArgs e)
{    
  CultureInfo newCulture = (CultureInfo) System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
  newCulture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
  newCulture.DateTimeFormat.DateSeparator = "-";
  Thread.CurrentThread.CurrentCulture = newCulture;
}
于 2016-02-02T11:52:00.223 に答える
-1

jquery.validator.js のようなプラグインはありましたか? もしあなたが...これを試してください:

 $("#myform").validate({
   ignore: "#DateInput"
})
于 2016-06-13T18:52:58.497 に答える