2

ASP.NETWEBAPIとjquery日時を使用しています。

私の問題は、ユーザーが「dd / MM/yyyy」の形式でdatepickerを使用して日付を選択できるようにすることです。しかし、(ここで行うように)datepickerを構成すると、WebAPIコントローラーのアクションに投稿された日付は「01/01/000100:00:00」になります。そして、日付ピッカーから「d / M / yy」のフォーマッターを削除した瞬間、適切な値を受け取ることができますが、ユーザーにはMM / dd/yyyyで選択された日付が表示されます。

以下に示すように、web.configでカルチャを「en-GB」として設定しました...

<system.web>
<globalization culture="en-GB" uiCulture="en-GB"/>    
</system.web>

それでもこれは役に立ちません。

誰かが試してみたい場合は、このシナリオを再作成し、プロジェクトをここにアップロードしました。

私のweb-apiコントローラーは次のようになります

public class ValuesController : ApiController
{
    // POST api/values
    public void Post(ResponseModel model)
    {
        string culture = CultureInfo.CurrentCulture.DisplayName;
        if (model != null)
        {
            string name = model.Name;
            DateTime startDate = model.StartDate;
            DateTime endDate = model.StartDate;
        }
    }
}

そして私の見解は下にあります

    $(document).ready(function () {

    $("#startDate").datepicker({});
    $("#endDate").datepicker({});

//        $("#startDate").datepicker({ dateFormat: "dd/m/yy" });
//        $("#endDate").datepicker({ dateFormat: "dd/m/yy" });

    $("#submitBtn").bind("click", function () {

        var postData = {
        name: $("#fullName").val(),
        startDate: $("#startDate").val(),
        endDate: $("#endDate").val()
        };

        var jsonData = JSON.stringify(postData);
        console.log(jsonData);

        $.ajax({
        url: 'api/values/',
        type: 'POST',
        data: jsonData,
        contentType: "application/json;charset=utf-8",
        success: function (data) {
        }
        });
    });

    });

</script>

<div>
<p>
<b>Name : </b> <input type="text" id="fullName" />
</p>
<p>
<b>Start Date : </b> <input type="text" id="startDate" />
</p>
<p>
<b>End Date : </b> <input type="text" id="endDate" />
</p>
<input type="submit" value="Submit these values" id="submitBtn"/>
</div>

誰かがこれについて私を助けてください。

だから最終的に私が欲しいのは

  • ユーザーは「dd/MM/yyyy」形式で日付を選択できる必要があります
  • 日付は同じ形式でコントローラーに到達する必要があります。

ありがとう

4

2 に答える 2

1

JSON日付の典型的な問題のようです。

日付ピッカーの日付形式を変更し、それがJsonに誤って送信されたため、WebAPIコントローラーで誤って解析されたとします。したがって、ピッカーで「デフォルト」で日付形式を変更すると、すべて機能します。

この問題についての素敵なブログ投稿を見てください

http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx

それは役立つはずです。

于 2012-10-20T11:15:46.463 に答える
0

日時フィールドを文字列に変更してから、日付を文字列としてコントローラーに送信しました。次に、コントローラーでこの文字列をを使用して日付に変換しましたDateTime.Parse()

于 2012-12-05T04:21:16.830 に答える