POST 작업을 완료 한 후 RedirectToAction을 시도하면 NullReferenceException이 발생합니다. 응용 프로그램은 내가 후속에 대한 (경로및 ) 다른 보기로 리디렉션 클라이언트를 원하는 유효한 경우, POST'ed입니다RedirectToAction을 호출 한 후 MVC 모델이 null입니다.
응용 프로그램 후 : 여기에 내가 무엇을 시도하고있어 요약입니다 프로세스. 더 정교 있지만 SubmitApplication보기에서
[HttpPost]
public ActionResult SubmitApplication(Application application)
{
// Do stuff
if (!ModelState.IsValid)
{
return View(application);
}
// Create and set variables for the next route
return RedirectToAction("ApplicationReview", new
{
x = "foo",
y = "bob"
});
}
[HttpGet]
public ActionResult ApplicationReview(string x, string y)
{
// Do stuff using x and y as keys
return View();
}
나는, 다음과 유사한 코드가 있습니다. RedirectToAction 후모델SubmitApplication에있는 개체는 null이며 예외를 throw합니다. 왜 SubmitApplication View가 리디렉션 프로세스의 일부로 반환되는지 이해할 수 있습니다. 모델이 null이거나 설정하는 방법을 알 수 없습니다. 결국 리디렉션이 실제로 발생하지 않았기 때문에 대상 액션에 도달하지 못했을 것입니다. @if (Model.HasSomething)
{
...
}
내가 뭘 잘못하고 있니? 이 작업을 수행하는 더 좋은 방법이 있습니까?
TempData를 사용하고 사용자가 페이지를 어떻게 든 새로 고치면 (예 : F5) TempData 항목이 사라집니다. 그래서 TempData는 MVC에서 가장 쓸모없는 것으로서 매우 희귀 한 경우를 제외하고는 절대로 사용해서는 안됩니다. 너무 희귀해서이 문제가 존재하지 않을 이유를 생각조차 할 수 없습니다. –
그런데 route 값은 querysring에 값을 추가합니다 (경로에 정의되지 않은 경우). 그러면 호출 된 작업의 매개 변수 목록에 바인딩됩니다. –
@MystereMan : Post-Redirect-Get을 수행하고 대상 작업에 일부 데이터를 보내야 할 때 TempData가 유용하다고 생각합니다. – Tuan