我有一个使用淘汰赛和 Web Api 2 的 MVC 5 项目。
我已经实现了分页,我的淘汰模型最初由第一页和底部的分页填充。允许用户导航到结果集中的其他页面。
代码如下:
选中复选框时将照片 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 Method 这目前有两个参数,第一个是我要提供的页码,第二个是选定的照片 ID,当前作为字符串传递。
public PhotoCollectionModel Get(int pageNumber, string selectedPhotos )
{}
我遇到的问题是我希望第二个参数是强类型的。或者至少列出选定的照片。目前我不得不在 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