ノックアウトと Web Api 2 を使用している MVC 5 プロジェクトがあります。
最初のページと下部に沿ったページネーションによって最初に入力されたノックアウト モデルでページングを実装しました。ユーザーが結果セット内の他のページに移動できるようにします。
コードは次のとおりです。
チェックボックスがオンの場合に、Photo Id をオブザーバブル配列にプッシュする Html マークアップ:
<span>Add</span><input type="checkbox" class="photo" name="selected-photos" id="selected-photos" data-bind="checked:$root.selectedPhotos, checkedValue: $data.PhotoId" />
ノックアウト ビュー モデル
function FlickrPhotosViewModel() {
var self = this;
self.photos = ko.observableArray([]);
self.noOfPages = ko.observable();
self.selectedPhotos = ko.observableArray([]);
self.pageNumber = ko.observable(1);
self.selectPage = function(pageNumber) {
jQuery.support.cors = true;
$.ajax({
url: '@Url.RouteUrl("DefaultApi", new {httproute = "", controller = "PhotosFromFlickr"})',
type: 'GET',
data: { pageNumber: ko.toJSON(pageNumber), selectedPhotos: ko.toJSON(self.selectedPhotos()) },
dataType: 'json',
success: function(data) {
self.photos(ko.mapping.fromJS(data.Photos));
self.noOfPages(data.NoOfPages);
self.selectedPhotos(data.SelectedPhotos);
},
error: function(x, y, z) {
alert(x + '\n' + y + '\n' + z);
}
});
};
jQuery.support.cors = true;
$.ajax({
url: '@Url.RouteUrl("DefaultApi", new {httproute = "", controller = "PhotosFromFlickr"})',
type: 'GET',
data: { pageNumber: ko.toJSON(self.pageNumber()), selectedPhotos: ko.toJSON(self.selectedPhotos()) },
dataType: 'json',
success: function (data) {
self.photos(ko.mapping.fromJS(data.Photos));
self.noOfPages(data.NoOfPages);
},
error: function (x, y, z) {
alert(x + '\n' + y + '\n' + z);
}
});
};
$(document).ready(function () {
ko.applyBindings(new FlickrPhotosViewModel());
});
Web API の Get メソッド 現在、これは 2 つの引数を取ります。1 つ目は提供したいページ番号、2 つ目は現在文字列として渡されている選択された写真 ID です。
public PhotoCollectionModel Get(int pageNumber, string selectedPhotos )
{}
私が抱えている問題は、2 番目のパラメーターを厳密に型指定することです。または、少なくとも選択した写真をリストします。現在、Web Api Get メソッドで json 文字列 (selectedPhotos) を逆シリアル化する必要があります...
これは可能ですか、それとも私は要点を逃していますか?
アップデート
これは、作成するリクエスト URL です -
http://localhost/Mvc/api/PhotosFromFlickr?pageNumber=3&selectedPhotos=%5B%228060459369%22%2C%227895411674%22%2C%227067757145%22%5D
ヘッダーは次のとおりです。
Request Headers :
Accept:application/json, text/javascript, */*; q=0.01
Referer:http://localhost/Mvc/Profile?username=MarkHBrown
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
X-Requested-With:XMLHttpRequest