我有一個基本的HTML表單,根據數據庫中存在多少記錄插入到服務器端div標記中。這個HTML表格出來就很好,而且一切都很好。但在我的操作頁面上,我似乎無法從後面的代碼中訪問輸入元素。我嘗試過使用Request範圍,但在這種方法上已經空了。還有其他建議嗎?如何從後面的asp.net代碼訪問HTML表單輸入
以下所有建議都很棒,通常我會這麼做。但是這些表單是在頁面編譯完成後立即構建的,所以runat ='server'對我沒有任何幫助。它只是將它傳遞給html頁面。
我有一個基本的HTML表單,根據數據庫中存在多少記錄插入到服務器端div標記中。這個HTML表格出來就很好,而且一切都很好。但在我的操作頁面上,我似乎無法從後面的代碼中訪問輸入元素。我嘗試過使用Request範圍,但在這種方法上已經空了。還有其他建議嗎?如何從後面的asp.net代碼訪問HTML表單輸入
以下所有建議都很棒,通常我會這麼做。但是這些表單是在頁面編譯完成後立即構建的,所以runat ='server'對我沒有任何幫助。它只是將它傳遞給html頁面。
如果您正在訪問純HTML表單,它必須通過提交按鈕(或通過javascript post)提交給服務器。這通常意味着你的表單定義看起來就像這樣(我會關閉內存,請務必檢查HTML元素是正確的):
<form method="POST" action="page.aspx">
<input id="customerName" name="customerName" type="Text" />
<input id="customerPhone" name="customerPhone" type="Text" />
<input value="Save" type="Submit" />
</form>
您應該能夠訪問客戶名稱和customerPhone數據,如這樣的:
string n = String.Format("{0}", Request.Form["customerName"]);
如果你在表單method="GET"
(不推薦,它攪亂了你的URL空間),你將不得不像這樣訪問表單數據:
string n = String.Format("{0}", Request.QueryString["customerName"]);
這當然只有在表單被「發佈」,「提交」或通過「回傳」完成時才能起作用。 (即有人點擊了「保存」按鈕,或通過javascript以編程方式完成)。
另外,請記住,只有當您不使用服務器控件(例如runat="server"
)才能以這種方式訪問這些元素, ,與服務器控件的ID和名稱是不同的。
通常應該使用Request.Form["elementName"]
。
例如,如果您有<input type="text" name="email" />
,則可以使用Request.Form["email"]
來訪問其值。
編輯:想到別的東西。
你說你正在動態創建一個表單 - 你真的是指一個<表格>及其內容'導致asp.net在一個頁面上的多個表單問題,它已經爲你創建一個uberform。
最簡單的方法是將IMO和runat服務器標籤包含在所有元素中。
<div id="MYDIV" runat="server" />
因爲聽起來像這些是動態插入的控件,所以您可能會喜歡FindControl()。
我猜測是你需要將這些輸入元素設置爲runat =「server」。
所以,你將無法訪問控制
<input type="text" name="email" id="myTextBox" />
但是,你就可以用
<input type="text" name="email" id="myTextBox" runat="server" />
工作,並從中讀取使用
string myStringFromTheInput = myTextBox.Value;
我得到`{}控制在當前context`沒有發現,當我做到這一點... – Si8 2014-07-21 16:10:09
由於您使用的是asp.net代碼隱藏功能,因此請將ID添加到元素和runat = server。
然後,您可以引用後面的代碼中的對象。
好主意,但它聽起來像他插入純HTML;不是動態的控制,所以runat屬性將永遠不會得到處理 – rizzle 2008-12-23 15:38:38
這一權利是我的問題的癥結所在,runat屬性永遠不會被編譯,所以我不能正確地訪問它們。 – 2008-12-23 16:12:36