嗨,我有一个简单的WCF REST服务,我需要通过看起来像这样的querystring获取一些参数。
页面= 1&rp = 10&sortname = id&sortorder = asc&query =&qtype =应用程序
我的UriTemplate无法正常工作,这是什么问题?只是试图使页面参数到目前为止。知道uri应该是什么样子吗?
[OperationContract]
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json,RequestFormat = WebMessageFormat.Json,
UriTemplate = "/?page={page}")]
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
JSONData GetLogList(string page);
这是我的服务代码
public class LogService : ILog
{
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
public JSONData GetLogList(string page)
{
var logContext = new LogViewDataContext();
var logsList = from logs in logContext.Logs select logs;
//return logsList.Cast<Log>().ToString();
var baseData = new JSONData();
baseData.page = Int32.Parse(page ?? "1");
baseData.total = logsList.Count();
var cells = new ArrayList();
var tmplist = new List<JSONDataRow>();
foreach(var log in logsList)
{
var row = new JSONDataRow();
row.id = log.ID;
cells.Add(value: log.Date);
cells.Add(value: log.Application);
cells.Add(value: log.Server);
cells.Add(value: log.Message);
row.cell = cells;
tmplist.Add(row);
}
int x = Int32.Parse(page);
int pageSize = 10;
baseData.rows = tmplist.Skip((x - 1) * pageSize).Take(pageSize).ToList();
return baseData;
}
}
这是调用该服务的javascript。
<script type="text/javascript">
$(document).ready(function() {
$("#logGrid").flexigrid({
type: 'POST',
url: 'http://MyWeb/Services/LogService.svc/',
contentType: "application/json; charset=utf-8",
dataType: "json",
colModel: [
{ display: 'Date', name: 'Date', width: 40, sortable: true, align: 'left' },
{ display: 'Application', name: 'Application', width: 150, sortable: true, align: 'left' },
{ display: 'Server', name: 'Server', width: 150, sortable: true, align: 'left' },
{ display: 'Message', name: 'Message', width: 250, sortable: true, align: 'left' }
],
searchitems: [
{ display: 'Date', name: 'Date' },
{ display: 'Application', name: 'Application', isdefault: true },
{ display: 'Server', name: 'Server' }
],
sortname: "id",
sortorder: "asc",
usepager: true,
title: "test",
useRp: true,
rp: 10,
showTableToggleBtn: false,
resizable: false,
width: 700,
height: 370,
singleSelect: true
});
});
</script>
最佳答案
您可以按以下方式设置URITemplate:
URITemplate="/GetLogList?page={page}"
然后,您来自jquery的网址应类似于:
http://MyWeb/Services/LogService.svc/GetLogList?page=1
更新:
如果您想要查询字符串中的其他参数,只需将它们附加到URItemplate
例如:
URITemplate="/GetLogList?page={page}&sortorder={sortorder}"
然后让您的方法拥有该参数
JSONData GetLogList(string page, string sortorder);
发出请求时,尝试使用Fiddler检查完整的请求。