2012-04-03 30 views
0

我正在做一些非常糟糕的代碼。我得到張貼到實際的頁面的所有數據並投入HTML輸入:如何發送Request.Form

private void GetPostedForm() 
{ 
    System.Text.StringBuilder displayValues = new System.Text.StringBuilder(); 
    System.Collections.Specialized.NameValueCollection postedValues = Request.Form; 

    for (int i = 0; i < postedValues.AllKeys.Length; i++) 
    { 
     String nextKey = postedValues.AllKeys[i]; 
     if (nextKey.Substring(0, 2) != "__") 
     { 
      displayValues.Append("<input type='hidden' name='" + nextKey + "' value='" + postedValues[i] + "'/>"); 
     } 
    } 
    hiddensPost.InnerHtml = displayValues.ToString(); 
} 

但是在這個頁面的HTML輸入是對我沒用。我在兩個較舊的頁面之間放置一個頁面(「A」發送到「B」)。現在我需要將「A」發送給「X」,然後發送給「B」。

問題是:如何將請求的表單放入實際的表單中發送到下一個頁面而不用在HTML中做所有這些亂七八糟的事情?

+0

從你做這一切的那一刻起,我確信你知道這是你自己做的,我不明白爲什麼這個問題 - 你在哪裏有堆棧。而且,從簡單的輸入html到另一個值的時刻,渲染到簡單的輸入html並不算差。這裏唯一想到的就是你渲染它們的位置,而你忘記了HtmlEncode它們的值 – Aristos 2012-04-03 20:34:13

+0

我只輸入它作爲 StringBuilder displayValues = new StringBuilder(); 對(INT I = 0;我」 \t \t \t \t HttpContext.Current.Request.Form.Keys [I],\t \t \t \t \t HttpContext.Current.Server.HtmlEncode(HttpContext.Current.Request.Form [I]的ToString()) \t \t \t); \t} } //在文學上,我會把它放在那裏。 txtOnMe.Text = displayValues.ToString(): – Aristos 2012-04-03 20:39:18

回答

1

你可以把你的步驟(A,X,B),它是可見的投入,爲獨立的ASP-面板(pnlA,pnlX,PNLB)

然後簡單地切換在狀態你want.the ViewState面板知名度會爲你做它(存儲控制的狀態到一個隱藏字段的形式中與輸入再次發佈)

,所以你可以張貼用戶提供一個HTML表單(著名的asp.net形式)

輸入的數據3倍

另一個解決方案是here,asp.net精靈控件

1

如果可以,只需將方法更改爲GET並將頁面間的QueryString一起傳遞。