POCOとknockoutjsの間でマッピングする方法はありますか?knockoutjsからPOCOオブジェクトへのマッピング/
は私が注意クラスがあります。
public class Note
{
public int ID { get; set; }
public string Date { get; set; }
public string Content { get; set; }
public string Category { get; set; }
public string Background { get; set; }
public string Color { get; set; }
}
をし、これが私のjavascriptです:
$(function() {
ko.applyBindings(new viewModel());
});
function note(date, content, category, color, background) {
this.date = date;
this.content = content;
this.category = category;
this.color = color;
this.background = background;
}
function viewModel() {
this.notes = ko.observableArray([]);
this.newNoteContent = ko.observable();
this.save = function (note) {
$.ajax({
url: '@Url.Action("AddNote")',
data: ko.toJSON({ nota: note }),
type: "post",
contentType: "json",
success: function(result) { }
});
}
var self = this;
$.ajax({
url: '@Url.Action("GetNotes")',
type: "get",
contentType: "json",
async: false,
success: function (data) {
var mappedNotes = $.map(data, function (item) {
return new note(item.Date, item.Content, item.Category, item.Color, item.Background);
});
self.notes(mappedNotes);
}
});
}
が使用されていない機能を保存する(ここでは、コードを簡素化する)という事実を無視します。
私はページをロードするときにサーバーを呼び出し、ノートオブジェクトのリストを取得し、JavaScriptでマップします。 IDがマップされていないことに注意してください。
これまでのところ、画面上にメモが表示されていましたが、メモをサーバーに保存する方法はありますか?
私はメモを(JSONに新しいメモだけで、コレクション全体ではなく)保存して、それを私のコントローラに送信しようとしましたが、コントローラのメモへのアクセス方法はわかりません。私は試しました:
public string AddNote(string date, string content, string category, string background, string color)
{
// TODO
}
しかし、動作していません。私はこれを行う方法、だから、
public string AddNote(Note note) {}
(ところで、ちょうどDBにデータを保存する方法のための最高のリターンは何無効?)
:私のような何かをしたいですか?私はknockout.mappingプラグインを試しましたが、それはかなり混乱していて、私はそれを私のために働かせません。
ありがとうございます。
叙事詩答え恐ろしいこれは完璧に動作しますが、:あなたは私の最後の段落を説明することができ...どのサーバからロードするように手動マッピングをImはここでやってか、私は、マッピング・プラグインを試してみて??? –
はい、偉大な答えは+1です。これは非常に明確な例です。 –
うわー、すばらしい仕事。 –