私はここで同じ質問を見ました:コントローラーに送信される剣道DateTimePicker日付の形式を設定しますしかし、与えられた答えは私の問題を解決しません。
簡単に言うと、私はそのような列を持つ剣道グリッドを持っています:
model: {
id: "Id",
fields: {
Id: {editable: false, type: "number"},
TransactionAmount: {type: "number"},
TransactionTime: {type: "date"}
}
TransactionTimeフィールドには、次のように定義された列があります。
{
field: "TransactionTime",
editor: transactionTimeColumnEditor,
format: "{0:u}"
}
フィールドエディタはDateTimePickerです。
function transactionTimeColumnEditor(container, options) {
$('<input name="' + options.field + '" />')
.appendTo(container)
.kendoDateTimePicker({
format: "dd.MM.yyyy HH:mm",
timeFormat: "HH:mm"
});
}
グリッドデータソーストランスポートは次のように定義されます。
create: {
url : "@Html.Raw(Url.Action("AddDeposit", "AdminDeposit"))",
type: "POST",
dataType: "json",
data: addAntiForgeryToken
},
parameterMap: function(data, operation) {
if (operation === "update" || operation === "create") {
data.TransactionTime = kendo.toString(kendo.parseDate(data.TransactionTime, "G"));
}
return data;
}
これまでのところ、コントローラーは何もしません。
これまでのところ、私のコントローラーは何もしません。
[HttpPost]
public ActionResult AddDeposit(DepositTransactionModel model)
{
if (!_permissionService.Authorize(StandardPermissionProvider.ManageOrders))
return AccessDeniedView();
return new NullJsonResult();
}
コントローラに、TransactionTime値が入力されていないことがわかります。生のHTTPPOSTパラメーターを確認すると、次のような文字列が表示されます。
Sun+Jan+22+2017+22:52:39+GMT+0100+(Central+Europe+Standard+Time)
ご覧のとおり、フォームデータのTransactionTimeプロパティを標準形式に変換しようとしました。しかし、それは役に立ちませんでした。parameterMap関数data.TransactionTimeの内部は次のようになります。
Date 2017-01-22T22:03:31.708Z
ただし、HTTPPOSTパラメーターは上記のようになります。
また、私は剣道文化を設定しようとしました:
kendo.culture("@CultureInfo.CurrentCulture.Name");
結果は同じです。
別のオプションについて読みました。トランスポートを関数として設定し、手動で生成されたJSONをサーバーに送信します。ただし、クライアント側での余分な複雑さは避けたいと思います。
重要なものが恋しいですか?
だから、私は解決策を見つけました。なぜ機能するのかわかりませんが、機能します。TransactionTimeがUTC文字列に変換されるデータソーストランスポートのparameterMap関数を実装しました。
parameterMap: function(data, operation) {
if (operation === "update" || operation === "create") {
data.TransactionTime = data.TransactionTime.toUTCString();
}
return data;
}
それでおしまい
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加