2017-02-22 1 views
0

이 질문을하기 전에 필자는 쿼리 문자열을 사용하고 있는지 확실하지 않습니다. 다른 혼란스러운 StackOverFlow 연구의 결과입니다). SSRS 보고서 뷰어에서 하이퍼 링크 표현식을 통해 내 앱으로 전달하는 매개 변수입니다. 그것은 작동하고 모든 것을 제외하면 웅대 한 것입니다. 나중에 URL에서 삭제하고 싶습니다.페이지로드 C에서 사용 후 내 쿼리 문자열을 지우고 싶습니다 #

http://10.155.54.101/Update?CurrencyId=67 

그리고 페이지로드시이 논리를 가진 매개 변수를 얻고 있습니다.

if (Request.Params["CurrencyId"] != null) 
    int CurrencyId = int.parse(Request.Params["CurrencyId"]); 

나는 성공적으로 정보를 수집하고 그것으로 asp.net 컨트롤을 채우는하지만 난 그게 업데이트를 제출 한 후 남아 지금처럼 주소 표시 줄에서을 지울하고 (포스트 백을?).

다른 스택 오버플로 답변 : Clear QueryString on PostBack을 통해 다음 코드를 통해 쿼리 문자열을 지우려고 시도했습니다.

Request.Params.Clear(); 

하지만 컬렉션은 위의 스택 오버플로 질문에서 다루는 읽기 전용 오류입니다. 그래서 System.Reflection을 사용하여 다음 코드로 컬렉션의 읽기 전용 속성을 변경하려고합니다.

PropertyInfo Isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic); 
       Isreadonly.SetValue(Request.Params, false, null); 
       Request.Params.Clear(); 

나는 오류가 발생하지 않지만 아무것도 제거하지 않습니다, 그래서 때문에 도대체 일을 Request.Params 그러나의 제대로 쿼리 문자열을 참조하지 않을 수 있습니다.

누군가 내게 올바른 방향으로 나를 밀어 주실 수 있습니까? 나는 이것에 관해서 우둔한 미안하다.

+0

querystring이 용납되지 않는 특별한 이유가 있습니까? 유효한 이유가 많이 있습니다. 그냥 호기심이 많으므로 여기서도 답변을 이끌어 낼 수 있습니다. – secretwep

+0

저는 완전히 솔직하게 말하면서, 제가 진정으로 이해하지 못하는 오류를 해결하려고 노력하고 있습니다. 내 데이터베이스의 레코드를 업데이트하는 업데이트 페이지가있는 응용 프로그램이 있는데 레코드를 검색하고 업데이트합니다. SSRS 보고서에는 각 레코드에 하이퍼 링크가있어서 업데이트 페이지로 이동하여 레코드의 데이터로 필드와 드롭 다운을 채 웁니다. 그러나 데이터는 정확성과 관련하여 완전히 끌어 올려집니다 (특히 많은 관계가 많은 관계). 업데이트도 게시하지 않습니다.나는 querystring이 그들의 문제와 관련이있는 다른 게시물을 읽었습니다. – David

+0

실례합니다. "불완전하게 뽑았습니다."라는 뜻입니까? 때로는 쿼리 문자열이 한 앱에서 다른 앱으로 데이터를 가져 오는 유일한 방법이며, 이것은 GET 작업입니다. 문제는 다른 곳에 있다고 생각합니다. 두 앱 모두 또는 둘 중 하나만 제어 할 수 있습니까? 귀하의 질문에 대한 자세한 내용은 귀하에게 답을 줄 수 있습니다. – secretwep

답변

2

브라우저의 검색 주소창에서 URL을 변경할 수 없습니다. 쿼리 문자열없이 브라우저로 URL을 리디렉션 할 수 있지만 값을 사용하여 렌더링중인 페이지에서 컨트롤을 채우는 방법을 확인하면 여전히 그 값을 가져야합니다.

"업데이트를 제출 한 후에도 남을 것"이라고 말하면 사용자가 통화를 선택하고이 쿼리 문자열이있는 페이지로 리디렉션된다는 의미입니까? 그렇다면이 작업을 GET 대신 POST로 변경할 수 있습니까? 그런 다음 currencyId를 POST의 본문에 넣을 수 있습니다. POST로 전환 할 수 없다면 아래 나열된 몇 가지 아이디어가 있습니다.

세션을 사용하는 경우 통화 세션을 사용자 세션에 저장할 수 있습니다. 하지만이 값을 다른 요청에 사용해야하는 경우에만 의미가 있습니다. 세션을 사용하는 것은 큰 결정이며 웹 사이트를 무국적으로 유지할 수 있다면 그렇게해야합니다.

그렇다면 사이트를 무국적으로 유지하는 두 가지 가능한 옵션이 있습니다. 이후 요청시이 값이 필요할 경우이를 쿠키에 저장할 수 있습니다. 이 요청에 대해서만 필요하면 쿼리 문자열없이 POST 본문의 값을 사용하여 페이지에 URL에 게시하도록 할 수 있습니다.

관련 문제