Request.QueryString 과 일반 NameValueCollection 의 차이
2646 단어 QueryStringNameValueCollection
디 버 깅 시 상황 을 살 펴 보 니 Query String 의 실제 유형 은 System.Web.HttpValueCollection 인 것 으로 나 타 났 다.이 유형 은 NameObject Collection Base 에서 계승 되 며 NameValueCollection 의 기본 클래스 와 같다.그렇다면 가장 유력 한 것 은 Query String 이 NameValue Collection 을 직접 계승 하고 ToString()을 다시 쓰 는 방법 이다.
일반 NameValue Collection 의 표현 은 다음 과 같다.
이상 의 판단 에 따 르 면 기본적으로 왜 QueryString 은 겉 으로 는 NameValue Collection 으로 보이 지만 실제로는 다른 ToString 표현 을 보 여 주 는 지 알 수 있다.
다음은 System.Web.HttpValue Collection 이 어떤 신성 한 지 알 아 보 겠 습 니 다.이 종 류 는 사용 하기에 편리 할 것 같 고 코드 에서 도 사용 하려 고 시도 하지만 힌트 는 종 류 를 찾 을 수 없습니다.MSDN 에서 도 이러한 종류의 기록 이 명확 하지 않 아 기본적으로 사유 유형 이나 보 호 받 는 것 으로 판정 할 수 있다.검색 해 보 니 이 종 류 는 System.Web.HttpValue Collection,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a 로,이 종 류 를 반사 적 으로 접근 하거나 수정 할 수 있 습 니 다.그래서 이런 종 류 를 쓰 려 면 기본적으로 귀 찮 고 가치 가 없다.그러나 일반 개발 자 들 의 눈 에는 문자열 을 조회 하 는 것 과 NameValue Collection 이 원활 하 게 호출 되 기 를 바 라 며 ToString()의 간단 한 방식 으로 얻 을 수 있다.현재 이들 의 전환 을 실현 하려 면 다음 과 같은 방식 이 있다.
검색 문자열 내용 에서 NameValueCollection 으로 변환
HttpUtility.ParseQueryString(querystring);(참고http://msdn.microsoft.com/zh-cn/library/ms150046(v=VS.90).aspx)이런 방식 으로 얻 은 것 은 정품 QueryString,ToString()이후 의 실제 값 이다.
NameValueCollection 에서 검색 문자열 로 전환
NameValue Collection 을 옮 겨 다 니 며 하나의 검색 문자열 만 맞 출 수 있 습 니 다
foreach (string key in c.Keys)
{
sb.AppendFormat("{0}={1}", key, c[key]);
}
그러나 실제로 우 리 는 읽 기 전용 Query String 이 아 닌 읽 기 가능 한 NameValue Collection 을 즐겨 사용 하기 때 문 입 니 다.외국인 도 이에 대해 의견 을 제 시 했 으 니 구체 적 으로 참고 할 만하 다
http://msmvps.com/blogs/paulomorgado/archive/2008/07/15/make-the-httpvaluecollection-class-public-and-move-it-to-system-dll.aspx
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
js 로 QueryString 가 져 오 는 방법 소결이 글 의 원 리 는 정규 표현 식 을 사용 하여 location.search 의 문자열 과 일치 하 는 것 입 니 다.그 중 세 가지 주요 함 수 는 getQueryString(),getQueryStringByNa...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.