c# - 패턴 - microsoft asp net mvc3 download




요청 데이터를 잃지 않고 ASP.NET MVC에서 ToAction을 리디렉션하는 방법 (4)

ASP.NET MVC를 사용하면 RedirectToAction 이 필요할 수있는 상황 (예 : 양식 제출)이 있습니다.

양식 제출 후 유효성 검증 오류가 발생하여 양식으로 다시 경로 재지 정해야하지만 양식이 제출하는 조치 페이지가 아닌 양식의 URL을 URL에 반영하려는 경우가 그러한 상황 중 하나입니다.

유효성 검사뿐만 아니라 사용자 편의를 위해 원래 POST ed 데이터를 포함하는 양식이 필요하므로 RedirectToAction() 통해 데이터를 전달하는 방법은 무엇입니까? viewData 매개 변수를 사용하면 POST 매개 변수가 GET 매개 변수로 변경됩니다.


TempData는 양식 모음을 세션에 저장합니다. 이 동작이 마음에 들지 않으면 새로운 ITempDataProvider 인터페이스를 구현하고 임시 데이터 저장을위한 다른 메커니즘을 사용할 수 있습니다. 세션 상태의 사용이 당신을 해치고 있다는 사실을 (측정 및 프로파일 링을 통해) 알지 않는 한 그렇게하지 않을 것입니다.


리디렉션 된 작업으로 데이터를 전달하려는 경우 사용할 수있는 방법은 다음과 같습니다.

return RedirectToAction("ModelUpdated", new {id = 1});
// The definition of the action method like  public ActionResult ModelUpdated(int id);

해결책은 TempData 속성을 사용하여 원하는 요청 구성 요소를 저장하는 것입니다.

예를 들어 :

public ActionResult Send()
{
    TempData["form"] = Request.Form;
    return this.RedirectToAction(a => a.Form());
}

그런 다음 "양식"동작에서 다음을 수행 할 수 있습니다.

public ActionResult Form()
{
    /* Declare viewData etc. */

    if (TempData["form"] != null)
    {
        /* Cast TempData["form"] to 
        System.Collections.Specialized.NameValueCollection 
        and use it */
    }

    return View("Form", viewData);
}

MVCContrib 살펴보십시오.이 작업을 수행 할 수 있습니다.

using MvcContrib.Filters;

[ModelStateToTempData]
public class MyController : Controller {
    //
    ...
}






asp.net-mvc