您好我有一个简单的WCF REST服务,我需要通过querystring获取一些看起来像这样的参数。
页= 1&安培; RP = 10安培; sortname = ID&安培;排序顺序= ASC&安培;查询=安培; 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>
答案 0 :(得分:5)
您可以按如下方式设置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检查完整请求。