0

Timeline.js + MVC + JavaScript

ビューに次のコードがあります

@{           
    var objs = objstudent.Timelines.Where(x => x.StudentID == Sessions.objStudent.StudentID).AsQueryable();
}
<script type="text/javascript">
@{
    @:var data = [];
    foreach(Student.Models.Timeline student in objs)
    {
         @:data.push({start : new Date "@student.MeetingDate", content : "@student.Description" });
    }
}

ここで、タイムラインに詳細を表示するために使用されるデータ配列に詳細を追加しようとしていますが、ブラウザでデータの値を確認すると、未定義と表示されます。

使用してみましたが、問題は同じです。

解決策はありますか?

4

1 に答える 1

1

このように JavaScript リテラルを手動で作成しないでください。常に適切なシリアライザを使用してください。例えば:

@{           
    var objs = objstudent.Timelines.Where(x => x.StudentID == Sessions.objStudent.StudentID).AsQueryable();
}
<script type="text/javascript">
    var data = @Html.Raw(
        Json.Encode(
            objs.Select(x => new 
            { 
                start = x.MeetingDate, 
                content = x.Description 
            })
        )
    );
</script>

次のような結果になるはずです。

<script type="text/javascript">
    var data = [
        { "start": "\/Date(1334655137358)\/", "content": "foo" },
        { "start": "\/Date(1334655137358)\/", "content": "bar" },
        ...
    ];
</script>

DateTime フィールドは、/Date(Ticks)フォーマットを使用してシリアル化されていることに注意してください。さまざまな手法を使用して、それらをネイティブの JavaScript 日付に変換できます。

于 2012-04-17T09:29:56.633 に答える