7

これを解決するのに非常に苦労しました(そして、どこかでばかげた間違いをしていると確信しています:))誰か助けてください。

送信中に、モデルで JQuery datepicker を使用して選択した日付を取得できません。「1/1/0001 12:00:00 AM」という値が得られます。何か不足していますか?

問題を特定するために、Visual Studio 2010 のテンプレートを使用して単純な MVC3 アプリケーションを作成しました。詳細は次のとおりです。

モデル:

namespace DatePickerApp.Models
{
    public class DatePickerClass
    {
        public DateTime BirthDate { get; set; }
    }
}

コントローラ:

namespace DatePickerApp.Controllers
{
    public class BirthDateController : Controller
    {

        //
        // GET: /BirthDate/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /BirthDate/Create

        [HttpPost]
        public ActionResult Create(DatePickerApp.Models.DatePickerClass DatePickerClass)
        {
            try
            {
                // TODO: Add insert logic here

                return View();
            }
            catch
            {
                return View();
            }
        }


    }
}

cshtml ビュー:

@model DatePickerApp.Models.DatePickerClass

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.1/themes/base/jquery-ui.css" />  
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>  
<script src="http://code.jquery.com/ui/1.10.1/jquery-ui.js"></script>  
<link rel="stylesheet" href="/resources/demos/style.css" />

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

<script type="text/javascript">
    $(document).ready(function () {
        $("#date").datepicker({ dateFormat: 'dd/mm/yy' });
    }); 
</script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>DatePickerClass</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.BirthDate)
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(model => model.BirthDate, new { id = "date" })
            @Html.ValidationMessageFor(model => model.BirthDate)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>
4

2 に答える 2

2

これは、jquery からの日付形式が、C#/VB の DateTime データで期待される形式の日付ではないために発生します。jq 日付形式を「1/1/0001 12:00:00 AM」と同じになるように変更します

正しい方法は次のとおりです。$("#date").datepicker({ dateFormat: 'dd/mm/yy hh:MM:ss' });

PS この「1/1/0001 12:00:00 AM」は、C# のデフォルトの日時値です。

ドキュメントを確認してください: http://api.jqueryui.com/1.8/datepicker/#option-dateFormat

また、このリンクは、午前/午後の部分を達成するのに役立つ場合があります: http://derekallard.com/blog/post/adding-time-to-jquery-ui-datepicker/

date_obj = new Date();
date_obj_hours = date_obj.getHours();
date_obj_mins = date_obj.getMinutes();

if (date_obj_mins < 10) { date_obj_mins = "0" + date_obj_mins; }

if (date_obj_hours > 11) {
    date_obj_hours = date_obj_hours - 12;
    date_obj_am_pm = " PM";
} else {
    date_obj_am_pm = " AM";
}

date_obj_time = "'"+date_obj_hours+":"+date_obj_mins+date_obj_am_pm+"'";

$("#entry_date").datepicker({dateFormat: $.datepicker.W3C + date_obj_time});  

このコントローラーを使用します。

[HttpPost]
    public ActionResult Index(DateTime? date)
    {
        //do something with date
    }

ドキュメントの準備ができているこのJavaScript:

$("[name=date]").datepicker({ dateFormat: "m/dd/yy" });

現在、日付はそれに応じて入力されます。

于 2013-03-13T07:01:13.470 に答える
0

これが助けになるかどうかはわかりません。しかし、私はこのようにすることを考えています。

以下のようなものを作成します

<td>date</td><td><input type="text" id="date" name="date"></td></tr>

そして使用request.getParameters("date");

ありがとう

于 2013-03-13T06:58:27.157 に答える