본문 바로가기

.NET/asp.net

asp.net에서 post전송

728x90
반응형
더 좋은 방법이 있을수도 있지만 저의 경우 아래와 같은 클래스 하나를 만들어 처리 했습니다. 

    public class Formwriter
    {
        private string msubmiturl;
        private string mMethod;
        private Hashtable mHash = new Hashtable();

        public string SubmitURL        // 프로퍼티 이동할 페이지 URL
        {
            get { return msubmiturl;}
            set { msubmiturl = value;}
        }


        public void Add(string key, string value)  // 포스트로 전송할 값 추가
        {
            mHash.Add (key, value);
        }

        public void Clear()    
        {
            mHash.Clear ();
        }

        public void Remove(string key)
        {
            mHash.Remove (key);
        }

        public int Count
        {
            get
            {
                return mHash.Count;
            }
        }

    
        public Formwriter()
        {
        }

        public Formwriter(string rurl)
        {
            msubmiturl = rurl;
        }

        public Formwriter(string rurl, string method)    //rurl - URL, method - POST, GET 등
        {
            msubmiturl = rurl;
            this.mMethod = method;
        }

        public string MakeForm()    // HTML을 생성 해서 string값으로 돌려줌.
        {
            string strForm = null;

            if (msubmiturl == null)
                return null;

            if(mMethod == null)
                mMethod = "POST";


            strForm = "<HTML>\n"
                + "<HEAD>\n"
                + "<title>Form</title>\n"
                + "<META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-
\">\n"
                + "</HEAD>\n"
                + "<body onload=\"javascript:document.frm.submit()\">\n"
                + "<form name=frm method=" + mMethod + " action=\""+ msubmiturl + "\">";

            foreach (DictionaryEntry de in mHash)    -- Post나 GET으로 전송할 키와 값을 생성
            {
                strForm += "<input type=\"hidden\" name=\"" + (string)de.Key + "\" value=\"" + (string)de.Value + "\">\n";
            }


            strForm += "</form>\n</body>\n</HTML>";


            return strForm;
        }
   }

위와 같이 클래스를 만들어 놓고.. 폼을 리다이렉트 시킬때는 함수안에 아래와 같이 사용합니다.

                Formwriter fw = new Formwriter();
                또는
                Formwriter fw = new Formwriter("/default.asp", "POST");
            
                
                fw.Add("키","값");        // 값이 여러개의 경우 루프나 아님 계속 추가합니다.
                ...
                ..

                string strhtml = fw.MakeForm();
                if (strhtml.Length > 0)
                {
                    Response.Clear();
                    Response.Write(strhtml);
                    Response.End();
                }



이상입니다... 좋은 해답이 됬으면 합니다.

더 좋은 방법을 찾으시면 저한테도 알려 주세요..^^

=========================================================================================================

<FORM id="Form1" method="post" runat="server">
......
</FORM>
<FORM name="Form2" method="post" action="원하는 페이지">
    <input type="hidden" name="">
</FORM>

위와같이 하단에 폼을 하나 더 만들어서
원래 있었던 곳의 값들을 하단의 폼의 hidden input으로 자바스트립트를 이용해서
복사한 다름 원하는 페이지로 보내면  이상없겠죠? viewstate문제 때문에 전 이 방법을 많이 애용합니다.
좀 자바스크립트 다루는 것이 귀찮죠.. 하지만 동작은 좀더 명확하죠.


출처: http://cafe.naver.com/webdotnet.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=42


728x90
반응형