2016-01-15 4 views
5

Я разрабатываю надстройку Sharepoint 2013, и мне нужно получить строку запроса исходного запроса.Извлечение строки запроса в надстройках sharepoint

Пользователи привязаны к нашим надстрокам из электронных писем, и нам нужно предоставить некоторый контекст. Надстройка запрашивается следующим образом: https://x.sharepoint.com/MyAddIn?p=10

Возможно ли получить значение p в моей надстройке?

ответ

2

Вы можете использовать следующий фрагмент кода:

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>'); 
+1

SPHostUrl не содержит строки запроса исходного запроса. При запросе надстройками Sharepoint пользователь перенаправляется в процесс. –

1

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 точкой надстройки. Эта дополнительная информация может быть полезна.

+0

Request.QueryString использует Request.URL внизу («текущий URL»), а не тот, который первоначально запрашивался перед перенаправлением. Мне придется протестировать ваш второй метод, но я бы предпочел не включать SPHostUrl и т. Д., Потому что он генерирует очень длинные URL-адреса. –

+0

Надстройка - это размещенная надстройка. –

+0

Я делаю большую часть своей работы, поэтому я не уверен, откуда это перенаправляется. Я понимаю, что для проверки пользовательского контекста для приложения требуется встроенная строка запроса, поэтому для вас существует переадресация. так что не может быть никакого пути вокруг массивного url string.i также предложит вам убедиться, что ссылка, которую вы даете своим пользователям, указывает прямо на расположение страницы в ** приложении web ** и _not_ the ** host ** web , это также может быть причиной перенаправления. Я не думаю, что это большая проблема, поскольку вы можете просто использовать тег 'a' в письме, чтобы представить ссылку – nerdondon

Смежные вопросы