ASP.NET WebForms에서 Post/Redirect/Get 패턴을 구현하려면 어떻게합니까?

StackOverflow https://stackoverflow.com/questions/919516

  •  06-09-2019
  •  | 
  •  

문제

그래서 PRG 패턴의 기본 사항을 이해합니다. 그러나 나는 페이지의 "get"인스턴스에 임의의 데이터를 사용할 수 있도록하는 기술을 발견하지 못했습니다.

예를 들어, PostBack을 시작한 동작에 따라 사용자에게 다른 피드백 메시지를 표시 할 수 있습니다.

내가하고있는 일은 식별자를 쿼리 문자열 매개 변수로 보내는 것입니다. 이것은 잘 작동하지만 북마크 문제를 소개하며 확장이 잘 될 것 같지 않습니다. 모든 viewstate를 보내야한다면 어떻게해야합니까?

불행히도, 나는 현재 WebForms에 묶여 있으며 조직이 MVC로 마이그레이션하도록 설득 할 수 없었습니다.

도움이 되었습니까?

해결책

게시 된 필드가 리디렉션 전에 지속되고 리디렉션 후 해당 데이터에 액세스 해야하는 경우 언급 한대로 쿼리 문자열의 데이터 레코드에 대한 식별자를 추가합니다. 요청에 대한 상태 (메시지 표시 등)를 지정할 수도 있습니다. 그런 다음 Get Page에서 데이터를 읽고 데이터를 수행 할 수 있습니다.

Get가 얻은 각 페이지가 이전 페이지에 액세스 할 수 없으므로이 문제를 해결할 수있는 다른 방법이 없습니다. ViewState 등.

사용 Server.Transfer 원래 페이지에서 게시물을 처리하는 것과 동일한 효과가 있습니다.

세션 변수를 사용하여 게시물 데이터를 저장할 수 있지만 그 악취는 악취가납니다.

다른 팁

나는 당신이 여전히 폼 요소에서 get 메소드를 사용할 수 있다고 생각합니다. 이 경우 일반적인 방식으로 제어 ID를 사용할 수 없습니다. 그러나 request.params 컬렉션을 사용하여 ViewState를 얻을 수 있습니다.

업데이트 : 죄송합니다. 방금 다시 시도했습니다. CodeBehind에서 ID로 서버 컨트롤에 액세스 할 수 있음을 발견했습니다. 처럼:

Response.Write(text1.Text)

예를 참조하십시오 :

ASPX 페이지 (양식 요소 만) :

< form id="form1" runat="server" method="get">
< div>
< asp:TextBox ID="text1" runat="server" />
< asp:Button ID="button1" runat="server" OnClick="buttonClick" />
< div>
< form>

노트: 각 "<"이전의 공간을 사용하여 위의 코드가 표시되지 않습니다.

페이지 뒤에있는 코드 (버튼 클릭 이벤트 만) :

protected void buttonClick(object sender, EventArgs e)
    {
        string text = Request.Params["text1"];

        Response.Write(text);
    }

버튼을 클릭하면 URL이 다음과 같습니다.

http://localhost:1157/WebSite1/Default.aspx?__VIEWSTATE=%2FwEPDwUKMTkwNjc4NTIwMWRkoJEtEHZ8lHQ53QllSkz8ncpEw80%3D&__EVENTVALIDATION=%2FwEWAwKf%2BPPUCwKTjKGwCgKs34rGBvus9oxN%2FQkHlkzpKUEwrbxHLM6u&text1=ashish&button1=

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top