[C#] 매개 변수가있는 RedirectToAction

내가 thusly 히 앵커에서 호출 작업이 입니다 .Site/Controller/Action/IDIDint

나중에 컨트롤러에서 동일한 작업으로 리디렉션해야합니다.

이것을 할 수있는 영리한 방법이 있습니까? 현재 tempdata ID를 숨기고 있지만 f5를 눌러 다시 돌아간 후 페이지를 새로 고치면 tempdata가 사라지고 페이지가 충돌합니다.



답변

RedirectToAction () 메소드의 routeValues ​​매개 변수의 일부로 id를 전달할 수 있습니다.

return RedirectToAction("Action", new { id = 99 });

이로 인해 Site / Controller / Action / 99로 리디렉션됩니다. 임시 또는 모든 종류의 뷰 데이터가 필요하지 않습니다.


답변

커트의 대답 은 내 연구에서 옳 아야 하지만 시도했을 때 실제로 나를 위해 일하기 위해서는이 작업을 수행해야했습니다.

return RedirectToAction( "Main", new RouteValueDictionary(
    new { controller = controllerName, action = "Main", Id = Id } ) );

컨트롤러를 지정하지 않으면 컨트롤러의 동작이 RouteValueDictionary작동하지 않습니다.

또한 이와 같이 코딩하면 첫 번째 매개 변수 (Action)가 무시되는 것 같습니다. 따라서 Dict에서 컨트롤러를 지정하고 첫 번째 매개 변수가 동작을 지정해야한다면 작동하지 않습니다.

나중에 오는 경우 먼저 Kurt의 답변을 시도하고 여전히 문제가있는 경우이 답변을 시도하십시오.


답변

RedirectToAction 매개 변수로 :

return RedirectToAction("Action","controller", new {@id=id});


답변

또한 둘 이상의 매개 변수를 통과 할 수 있다는 점도 주목할 가치가 있습니다. id는 URL의 일부를 구성하는 데 사용되며 다른 것은? 뒤에 매개 변수로 전달됩니다. URL에 있으며 기본적으로 UrlEncoded가됩니다.

예 :

return RedirectToAction("ACTION", "CONTROLLER", new {
           id = 99, otherParam = "Something", anotherParam = "OtherStuff"
       });

따라서 URL은 다음과 같습니다.

    /CONTROLLER/ACTION/99?otherParam=Something&anotherParam=OtherStuff

그런 다음 컨트롤러에서이를 참조 할 수 있습니다.

public ActionResult ACTION(string id, string otherParam, string anotherParam) {
   // Your code
          }


답변

//How to use RedirectToAction in MVC

return RedirectToAction("actionName", "ControllerName", routevalue);

return RedirectToAction("Index", "Home", new { id = 2});


답변

MVC 4 예제 …

항상 ID라는 이름의 매개 변수를 전달할 필요는 없습니다.

var message = model.UserName + " - thanks for taking yourtime to register on our glorious site. ";
return RedirectToAction("ThankYou", "Account", new { whatever = message });

과,

public ActionResult ThankYou(string whatever) {
        ViewBag.message = whatever;
        return View();
} 

물론 ViewBag를 사용하는 대신 모델 필드에 문자열을 할당 할 수 있습니다.


답변

매개 변수가 복잡한 개체 인 경우 문제가 해결 됩니다. 열쇠는 RouteValueDictionary생성자입니다.

return RedirectToAction("Action", new RouteValueDictionary(Model))

컬렉션이있는 경우 조금 까다 롭지 만이 다른 대답은 이것을 아주 잘 다루고 있습니다.