내가 thusly 히 앵커에서 호출 작업이 입니다 .Site/Controller/Action/ID
ID
int
나중에 컨트롤러에서 동일한 작업으로 리디렉션해야합니다.
이것을 할 수있는 영리한 방법이 있습니까? 현재 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))
컬렉션이있는 경우 조금 까다 롭지 만이 다른 대답은 이것을 아주 잘 다루고 있습니다.