2012-01-28 37 views
0

我正在寫一個web應用程序在asp.net我有一個母版頁包含一個ContentPlaceHolder 和一個窗體包裝ContentPlaceHolder在aspx頁面中,我實現了ContentPlaceHolder並在此頁面中有一些控件。無法從aspx頁面獲取Request.Form.Get valus ContentPlaceHolder(表單錯誤)

現在,當我試圖使用Request.Form.Get(「我的控制名稱」)(從aspx後面的代碼),我得到空。 如果我嘗試在aspx頁面中添加一個表單,我會收到一個錯誤消息,說您只能在頁面中有一個表單。

我怎樣才能得到我的控制值?

感謝您的幫助。

+0

什麼是form標籤中的方法,如method = post? – Saurabh 2012-01-28 10:03:58

回答

0

如果您只是試圖在主頁和頁面之間傳遞一個值,假設該值在主頁上,您可以將Page.Master轉換爲正確的類型。在母版頁上,您可以將控件包裝在母版上。

母版

public string MyControlText 
{ 
    get 
    { 
     return myControl.Text; 
    } 
    set 
    { 
     myControl.Text = value; 
    } 
} 

在頁面

((MyMasterPage)this.Page.Master).MyControlText = "To master from page"; 

string fromMasterToPage = ((MyMasterPage)this.Page.Master).MyControlText; 
1

Request.Form("YourControlName")因爲ASP.NET增加了一些額外的東西給你的控制,當它輸出到頁面的名稱不能與服務器控件工作。它這樣做是爲了確保名稱在頁面上的所有控件中保持唯一。因此,例如,當您的控件在頁面上創建時,實際上可能會命名爲「ctl00_maincontent_placeholder1_YourControlName」。

在ASP.NET中,這通常不是問題,因爲您通常不使用Request.Forms來獲取控件值。而是使用服務器控件的方法來獲取值。因此,對於文本框,您可以使用YourControlName.Text來獲取輸入到文本框中的值。