2013-08-01 55 views
1

雖然我不認爲自己是一個網絡程序員,但我已經做了大量的網絡編程,所以我幾乎不好意思問下面的代碼有什麼問題。有一些關於ASP.NET的基本知識我必須忽略。ASP.NET WebForms表單未被髮布 - 爲什麼?

我有兩頁,source.aspx和destination.aspx:

source.aspx - HTML:

<body> 
<form id="form1" action="destination.aspx" method="post" runat="server"> 
    <input id="Text1" type="text" /> 
    <input id="Text2" type="text" /> 
    <input id="Checkbox1" type="checkbox" /> 
    <input id="Submit1" type="submit" value="submit" /> 
</form> 
</body> 

destination.aspx - 後面的代碼:

protected void Page_Load(object sender, EventArgs e) 
    { 
     // Below variable gets assigned null. 
     string text1 = Request.Form["Text1"]; 
    } 

當我提交source.aspx表單時,一旦它到達destination.aspx表單,就沒有信息FORM變量中的信息。我認爲窗體的runat =「server」會確保我結束了ASP.NET頁面管道,事實上我可以通過這個代碼。除viewstate之外,沒有任何POST的表單變量,PARAMs集合也沒有任何對應於控制數據的東西,甚至沒有對應於裝飾控件名稱的東西。問題是,發生了什麼讓我的POST變量'消失',至少到目標頁面?

我不在尋找替代品如何使這項工作(即使控制服務器控件與runat =「服務器」等)。我可以解決這個問題。我試圖確定的是'ASP.NET是什麼讓我的控件看起來不被目標頁面接收。謝謝 - 我認爲我很瞭解HTTP,但似乎有一點我沒有看到ASP.NET的手段。

+0

所以你有不同的網頁:Source.aspx&destination.aspx。在提交source.aspx時,您需要檢查destination.aspx中的表單值? –

回答

5

您可以從表單標記中移除runat =「server」,因爲您希望退出ASP.NET爲服務器控件提供的內容。你基本上正確地認爲這應該工作,而不需要所有的ASP.NET頁面處理位。

這是一個你需要做的小改變 - 你需要在輸入控件上使用'name'而不是'id',以便它們出現在Form集合中。這是一個微妙的事情,但我相信它不是排他性的ASP.NET - name屬性指定將值與POST變量集合關聯的內容。

的ID以獲取更多信息,請諮詢HTML input - name vs. id與名

好運

+0

謝謝,這是非常有用的,雖然我認爲name屬性已被棄用。我會給它一個旋轉。 +1給出 - 謝謝! –

2

的Request.Form使用name屬性的元素。所以你應該爲每個html元素編寫名稱屬性。

<body> 
<form id="form1" action="destination.aspx" method="post" runat="server"> 
    <input id="Text1" name="Text1" type="text" /> 
    <input id="Text2" name="Text2" type="text" /> 
    <input id="Checkbox1" name="Checkbox1" type="checkbox" /> 
    <input id="Submit1" type="submit" value="submit" /> 
</form> 
</body> 
相關問題