RedirectToAction 메서드로 쿼리 문자열 값을 추가하는 방법은 무엇입니까?


79

asp.net mvc에서 다음 코드를 사용하고 있습니다.

RedirectToAction("myActionName");

쿼리 문자열을 통해 일부 값을 전달하고 싶습니다. 어떻게해야합니까?

답변:


158

경로의 일부가 아닌 전달 된 모든 값은 쿼리 문자열 매개 변수로 사용됩니다.

return this.RedirectToAction
  ("myActionName", new { value1 = "queryStringValue1" });

반환 할 것 :

/controller/myActionName?value1=queryStringValue1

"value1"이라는 경로 매개 변수가 없다고 가정합니다.


동의하지만 이름이 "value1"인 작업 매개 변수가있을 수 있습니다. 왜 안돼?
Alexander Prokofyev

4
대답은 " 'value1'이라는 경로 매개 변수가 없다고 가정한다"는 의미라고 생각합니다. 그렇지 않으면 값이 생성 된 URL의 경로 매개 변수 위치로 이동합니다. 예를 들어 {controller} / {action} / {value1}은 / controller / myActionName? value1 = queryStringValue1이 아니라 / controller / myActionName / queryStringValue1이됩니다.
Levi

Levi가 맞습니다. 내가 의미하는 바를 명확히하기 위해 답을 수정했습니다.
Talljoe


4

RedirectToAction에 CURRENT 쿼리 문자열 값을 추가하려는 저와 같은 사람들에게는 이것이 해결책입니다.

var routeValuesDictionary = new RouteValueDictionary();
Request.QueryString.AllKeys.ForEach(key => routeValuesDictionary.Add(key, Request.QueryString[key]));
routeValuesDictionary.Add("AnotherFixedParm", "true");
RedirectToAction("ActionName", "Controller", routeValuesDictionary);

보시 다시피 해결책은 RouteValueDictionary 객체 를 사용하는 것입니다.


3

내가했던 것과 같은 실수를하지 마십시오. 404 오류를 처리 404=filename하고 쿼리 문자열에서 리디렉션하고 싶었습니다 mysite.com?404=nonExistentFile.txt.

QueryString 키는 숫자로 시작할 수 없습니다. 에서 404로 변경 FileNotFound하여 내 문제 를 해결했습니다 mysite.com?FileNotFound=nonExistentFile.txt.


1
이것은 일반적으로 사실 이 아닙니다 . .NET MVC (적어도 v5에서는)의 경우도 마찬가지입니다. 숫자로만 구성 되더라도 키는 문자열이라는 것을 기억하십시오. 다음과 같이 숫자 키에 액세스합니다 HttpContext.Request.QueryString["404"]..
BrianS dec.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.