code

ASP.NET MVC-QueryString 값 가져 오기

codestyles 2020. 11. 10. 08:09
반응형

ASP.NET MVC-QueryString 값 가져 오기


ASP.NET MVC에서 ASP.NET WebForms에서와 같은 방식으로 QueryString 매개 변수를 선택해야합니까? 아니면 [AcceptVerbs(HttpVerbs.Get)]선언이 어떻게 든 사용됩니까?


쿼리 문자열 매개 변수는 작업에 대한 인수를 사용하여 간단히 받아 들일 수 있습니다.

public ActionResult Foo(string someValue, int someOtherValue) {...}

다음과 같은 쿼리를 수락합니다. .../someroute?someValue=abc&someOtherValue=123

그 외에 더 많은 제어를 위해 요청을 직접 볼 수 있습니다.


당신이 찾고있는 것은

Request.QueryString["QueryStringName"]

추가하여보기에서 액세스 할 수 있습니다. @

이제 내 예를 살펴보면 QueryString으로 Url을 생성했습니다.

 var listURL = '@Url.RouteUrl(new { controller = "Sector", action = "List" , name = Request.QueryString["name"]})';

listURL 값은 /Sector/List?name=value'

그리고 queryString비어 있을 때

listURL 값은 /Sector/List


Request.QueryString웹 양식과 같은 컬렉션을 항상 사용할 수 있지만 MVC에서이를 처리하고 매개 변수로 전달할 수도 있습니다. 이것은 더 쉽고 입력 데이터 유형의 유효성을 자동으로 검증하므로 제안 된 방법입니다.


컨트롤러의 ValueProvider 속성을 사용하는 것이 좋습니다. UpdateModel / TryUpdateModel이 필요한 경로, 쿼리 및 양식 매개 변수를 추출하는 방식과 비슷합니다. 이렇게하면 메서드 서명이 잠재적으로 매우 커지고 자주 변경되는 것을 방지 할 수 있습니다. 또한 단위 테스트 중에 ValueProvider를 컨트롤러에 제공 할 수 있으므로 테스트하기가 조금 더 쉽습니다.


실제로 두 가지 방법으로 MVC에서 쿼리 문자열을 캡처 할 수 있습니다 .....

public ActionResult CrazyMVC(string knownQuerystring)
{

  // This is the known query string captured by the Controller Action Method parameter above
  string myKnownQuerystring = knownQuerystring;

  // This is what I call the mysterious "unknown" query string
  // It is not known because the Controller isn't capturing it
  string myUnknownQuerystring = Request.QueryString["unknownQuerystring"];

  return Content(myKnownQuerystring + " - " + myUnknownQuerystring);

}

이것은 두 쿼리 문자열을 모두 캡처합니다 ... 예 :

/CrazyMVC?knownQuerystring=123&unknownQuerystring=456

Output: 123 - 456

왜 그렇게 디자인했는지 묻지 마세요. 개별 쿼리 문자열에 대한 전체 컨트롤러 작업 시스템을 버리고 URL에 대한 모든 문자열 / 인코딩 된 파일 개체의 캡처 된 동적 목록을 url-form-encoding으로 반환하여 한 번의 호출로 모두 쉽게 액세스 할 수 있다면 더 합리적 일 것입니다. . 아마도 여기 누군가가 가능하다면 그것을 증명할 수 있습니까?

컨트롤러가 쿼리 문자열을 캡처하는 방법은 이해가 안되지만, 이는 즉시 가르치는 것보다 쿼리 문자열을 캡처하는 데 더 많은 유연성이 있음을 의미합니다. 그러니 당신의 독을 선택하십시오.

참고 URL : https://stackoverflow.com/questions/627838/asp-net-mvc-getting-querystring-values

반응형