當編碼一個Asp.Net頁面中,你一般在ASPX添加runat屬性:如何判斷表單runat = server是否已設置?
<form id="form1" runat="server">
是否有可能在代碼中告訴後面如果用戶沒有這樣做,即他們只這樣做:
<form id="form1">
這裏的表格有id「form1」,但在我的情況下,我不知道這一點。後面像這樣的代碼是什麼我要找:
if(Page.HasForm)
{
}
當編碼一個Asp.Net頁面中,你一般在ASPX添加runat屬性:如何判斷表單runat = server是否已設置?
<form id="form1" runat="server">
是否有可能在代碼中告訴後面如果用戶沒有這樣做,即他們只這樣做:
<form id="form1">
這裏的表格有id「form1」,但在我的情況下,我不知道這一點。後面像這樣的代碼是什麼我要找:
if(Page.HasForm)
{
}
你永遠只能有每個.aspx頁面中「RUNAT =服務器」上一個表單標籤。你所要做的就是檢查一下Page.Form是否爲null。如果它是空的,那麼沒有標記爲runat服務器的表單。
if (Page.Form != null)
{
}
這是RUNAT =「服務器」的一部分,使.aspx頁處理的元素,創建在服務器側上的相應的對象。如果組件未在服務器上運行,則不會將其添加到頁面的控制層次結構中。
你確定你也有一個頁面...大聲笑無法自拔。 – 2009-09-25 03:14:07
與OP一樣多的肋骨越來越多,它可能有一個空表單。考慮完全通過代碼構建的Page類,然後從它們繼承ASPX。基類可能具有依賴於具有表單的子類的虛擬功能。 – womp 2009-09-25 03:29:18
var v = this.Form.TagName; //獲取作爲runat的表單的名稱。
當然,如果它不是maked爲RUNAT然後後面的代碼無論如何都不會跑......
當你在代碼頁C#或Visual Basic代碼,您將無法訪問對象沒有設置runat = server選項。
你可以使用me.controls頁面或類似的東西(我不知道確切的代碼,但它接近這個)輕鬆地訪問頁面中的所有控件,並檢查控件的類型以獲得形成。
爲什麼你需要知道這一點?如果頁面沒有runat = server表單,那麼它不能真正用作服務器頁面。
,您將可以從代碼隱藏訪問形式:
Response.Write(form1.Name);
沒有RUNAT =「服務器」,你只會得到一個編譯錯誤。
什麼?在代碼後面?是的,你可以很容易地告訴。如果你有權訪問一個名爲'form1'的對象:)但我認爲你的意思是在呈現的HTML中?你能澄清嗎? – 2009-09-25 02:05:47
您可能不知道表單ID。查看更新的問題。 – Petras 2009-09-25 02:25:18
誰在寫應用程序?不同的人對標記負責而不是代碼隱藏?是否無法檢查標記以檢查表單的名稱?這個問題,就目前來看,對我來說毫無意義。 – tvanfosson 2009-09-25 02:47:34