我正在开发一个 SharePoint 2013 外接程序,我需要检索原始请求的查询字符串。
用户通过电子邮件链接到我们的加载项,我们需要提供一些上下文。加载项的请求如下所示:https://x.sharepoint.com/MyAddIn?p=10
是否可以在我的加载项中检索 p 的值?
您可以使用以下代码片段:
Uri myurl = new Uri(Request.QueryString["SPHostUrl"]);
string param1 = HttpUtility.ParseQueryString(myUri.Query).Get("p");
或使用
string param1 = Request.QueryString["p"];
如果你想通过JS做到这一点,那么继续这个
function getQueryStringParameter(paramToRetrieve) {
var params;
var strParams;
params = document.URL.split("?")[1].split("&");
strParams = "";
for (var i = 0; i < params.length; i = i + 1) {
var singleParam = params[i].split("=");
if (singleParam[0] == paramToRetrieve)
return singleParam[1];
}
}
var sProp = decodeURIComponent(getQueryStringParameter("StringProperty1"));
document.write('Value of StringProperty1 : ' + sProp + '</br>');
SPHostUrl 绝对不应该包含您的参数,但您是否尝试过@STORM的其他建议: string param1 = Request.QueryString["p"];
内置加载项查询字符串附加到您发送给用户的 URL,则可能会避免重定向,如下所示: http://<your-app-prefix>.domain.com/<Add In>?SPHostUrl=<host url>&SPAppUrl=<app url>&...&p=10
处理过的加载项向用户发送电子邮件,其中包含也需要上下文的链接,这种方法对我有用。
如果这不起作用,则外接程序是提供程序托管的外接程序还是 SharePoint 托管的外接程序。这些额外的信息可能会有所帮助。