0

MVC3 で Kendo UI を使用します。

開発者ツールのネットワーク タブを使用すると、正しいデータがすべて送信されていることがわかりますが、コントローラー メソッドに入力されるモデル パラメーターにカーソルを合わせると、日付はすべて 1/1/0001 です。ここにいくつかのデータがあります:

ネットワーク要求タブからのヘッダー情報 (正しいデータがコントローラーに送られていることを示します:

Accept:application/json, text/javascript, */*; q=0.01
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Origin:http://localhost:47621
Referer:http://localhost:47621/NewOrder/Detail/18
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko)                   Chrome/26.0.1410.64 Safari/537.31
X-Requested-With:XMLHttpRequest

Form Dataview sourceview URL encoded
CommentId:9
CommentText:blah blah random text.
IncidentId:7
ModifiedBy:admin
ModifiedDate:Thu Jun 06 2013 08:15:08 GMT-0700 (Pacific Daylight Time)
CreatedBy:admin
CreatedDate:Thu Jun 06 2013 08:15:08 GMT-0700 (Pacific Daylight Time)

剣道コード:

var IncId = $("#IncidentId").val();
var ds_CommentsGrid = new kendo.data.DataSource({
    transport: {
        read        : {
            url     : '@Url.Action("JsonGetComments", "TrespassOrder")/' + IncId,
            dataType: 'json',
            type    : "POST"
        },
        update      : {
            url     : '@Url.Action("JsonEditComment", "TrespassOrder")',
            dataType: 'json',
            type    : "POST"
        },
        parameterMap: function (options, operation) {
            if (operation !== "read" && options.models) {
                var values = {};
                values["CommentId"] = options.models[0].CommentId;
                values["CommentText"] = options.models[0].CommentText;
                values["IncidentId"] = options.models[0].IncidentId;
                values["ModifiedBy"] = options.models[0].ModifiedBy;
                values["ModifiedDate"] = options.models[0].ModifiedDate;
                values["CreatedBy"] = options.models[0].CreatedBy;
                values["CreatedDate"] = options.models[0].CreatedDate;
                return values;
            }
        }
    },
    batch    : true,
    schema   : {
        model: {
            id    : "CommentId",
            fields: {
                CommentId   : { editable: false },
                CommentText : { editable: true },
                CreatedDate : { editable: false, type: "date"},
                ModifiedDate: { editable: false, type: "date" },
                CreatedBy   : { editable: false },
                ModifiedBy  : { editable: false }
            }
        }
    },
    pageSize : 5
});

$(document).ready(function () {

    $("#Comment-List").kendoGrid({
        dataSource: ds_CommentsGrid,
        sortable  : true,
        filterable: { extra: false, operators: {
            string: { startswith: "Starts with", eq: "Is equal to" }
        }
        },
        pageable  : true,
        columns   : [
            { field: "CommentText", title: "Comment", width: 300, filterable: false },
            { field: "CreatedBy", title: "Author", filterable: false },
            { field: "CreatedDate", title: "Original Date", format: "{0:g}", filterable: { ui: "datetimepicker" } },
            { field: "ModifiedBy", title: "Edited By", filterable: false },
            { field: "ModifiedDate", title: "Editted On", format: "{0:g}", filterable: { ui: "datetimepicker" } },
            { command: ["edit"], title: "Actions" }
        ],
        editable  : "popup"
    });
});

リクエストヘッダーに記載されているコンテンツタイプについて疑問に思っていますが、正しいですか?

4

1 に答える 1

0

レスポンスを json として送信してみてください:

    update: {
        url     : '@Url.Action("JsonEditComment", "TrespassOrder")',
        dataType: 'json',
        type    : "POST",
        contentType: "application/json"
    },
    parameterMap: function (options, operation) {
        if (operation !== "read" && options.models) {
            var values = {};
            values["CommentId"] = options.models[0].CommentId;
            values["CommentText"] = options.models[0].CommentText;
            values["IncidentId"] = options.models[0].IncidentId;
            values["ModifiedBy"] = options.models[0].ModifiedBy;
            values["ModifiedDate"] = options.models[0].ModifiedDate;
            values["CreatedBy"] = options.models[0].CreatedBy;
            values["CreatedDate"] = options.models[0].CreatedDate;
            return JSON.stringify(values);
        }
    }

ASP.NET MVC は、JavaScript Date オブジェクトの文字列表現を解析できません。ただし、JSON としてシリアル化されている場合は解析できます。

于 2013-06-12T18:57:41.877 に答える