System.Web.HttpRequest
페이지가 C #으로로드 될 때마다 클래스 인스턴스의 멤버를 가져 오려고하는 문제가 있습니다. 특히 RawUrl
회원에 액세스 할 때마다 문제가 발생합니다 . 다음은 .Net 3.5에서 실행되는 간단한 예입니다.
string u0 = Request["RawUrl"]; // this gives me a value of null
string u1 = Request.RawUrl; // Using dot notation instead of square brackets works
string u2 = Request["Url"]; // However, "Url" works with square bracket notation
그래서 내 질문은 왜 Url
대괄호 표기법으로 Request 의 속성을 얻을 수 있지만 똑같이 할 수는 RawUrl
없습니까? Url
속성은입니다 System.Uri
반면 재산 RawUrl
나는 그것을 얻을 더 쉽게 될 것이라고 상상하는 것, 그래서 그냥 문자열입니다. 내가 이해하지 못하는 것은 무엇입니까?
예를 들어 JavaScript where foo["bar"]
and foo.bar
are to way to access the same member, C #에서는 완전히 다른 것을 의미합니다. 단순히 다른 표기법이 아니라 완전히 다른 방법입니다.
개체의 대괄호는 개체 에 인덱서가 있으면 인덱서를 호출 합니다 (개체에 없으면 컴파일러 오류가 발생 함). HttpRequest의 경우 대괄호는 HttpRequest.Items를 호출 합니다.
QueryString, Form, Cookies 또는 ServerVariables 컬렉션에서 지정된 개체를 가져옵니다.
public string this[string key] { get; }
이 URL
항목의 일부이지만 RawUrl은 아닙니다. (물론 다른 사람이 좋은 대답을 가지고 있다고 가정하는 "왜 그렇지 않습니까?"라는 질문에 대답하지 않지만, 내 요점은 C #에서 대괄호와 점 표기법이 동일하다는 잘못된 정보를 해결하는 것입니다.)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다