2009-09-25 68 views
0

當編碼一個Asp.Net頁面中,你一般在ASPX添加runat屬性:如何判斷表單runat = server是否已設置?

<form id="form1" runat="server"> 

是否有可能在代碼中告訴後面如果用戶沒有這樣做,即他們只這樣做:

<form id="form1"> 

這裏的表格有id「form1」,但在我的情況下,我不知道這一點。後面像這樣的代碼是什麼我要找:

if(Page.HasForm) 
{ 
} 
+1

什麼?在代碼後面?是的,你可以很容易地告訴。如果你有權訪問一個名爲'form1'的對象:)但我認爲你的意思是在呈現的HTML中?你能澄清嗎? – 2009-09-25 02:05:47

+0

您可能不知道表單ID。查看更新的問題。 – Petras 2009-09-25 02:25:18

+1

誰在寫應用程序?不同的人對標記負責而不是代碼隱藏?是否無法檢查標記以檢查表單的名稱?這個問題,就目前來看,對我來說毫無意義。 – tvanfosson 2009-09-25 02:47:34

回答

2

你永遠只能有每個.aspx頁面中「RUNAT =服務器」上一個表單標籤。你所要做的就是檢查一下Page.Form是否爲null。如果它是空的,那麼沒有標記爲runat服務器的表單。

if (Page.Form != null) 
{ 

} 

這是RUNAT =「服務器」的一部分,使.aspx頁處理的元素,創建在服務器側上的相應的對象。如果組件未在服務器上運行,則不會將其添加到頁面的控制層次結構中。

+0

你確定你也有一個頁面...大聲笑無法自拔。 – 2009-09-25 03:14:07

+0

與OP一樣多的肋骨越來越多,它可能有一個空表單。考慮完全通過代碼構建的Page類,然後從它們繼承ASPX。基類可能具有依賴於具有表單的子類的虛擬功能。 – womp 2009-09-25 03:29:18

0

var v = this.Form.TagName; //獲取作爲runat的表單的名稱。

當然,如果它不是maked爲RUNAT然後後面的代碼無論如何都不會跑......

0

當你在代碼頁C#或Visual Basic代碼,您將無法訪問對象沒有設置runat = server選項。

你可以使用me.controls頁面或類似的東西(我不知道確切的代碼,但它接近這個)輕鬆地訪問頁面中的所有控件,並檢查控件的類型以獲得形成。

爲什麼你需要知道這一點?如果頁面沒有runat = server表單,那麼它不能真正用作服務器頁面。

0

,您將可以從代碼隱藏訪問形式:

Response.Write(form1.Name); 

沒有RUNAT =「服務器」,你只會得到一個編譯錯誤。

相關問題