2014-01-24 59 views
-1

我在aspx文件中有這段代碼。ASP.NET webforms不同的Id的

<form runat="server"> 

這應該不復雜。但事實證明是這樣。 在我的電腦和測試環境將它轉換爲:

<form id="aspnetForm" ....> 

但生產它變成:

<form id="ctl00" .... > 

非常感謝我的前任很多JS是在「aspnetForm」 ID掛鉤,這是工作不正常。
那麼這個ID代差異從哪裏來?

P.S.我知道解決方案只是重寫JS查詢或將類標籤放在表單上,​​然後進行查詢。雖然我仍然對這些事情發生的原因感興趣

+0

D你甚至讀過的問題?我問:「爲什麼** ID可能會在不同的環境下產生不同的結果」。不是爲什麼

id標籤被覆蓋,這在我的情況下沒有意義,因爲沒有標籤開始。 – lew

+0

是的,我確實已經讀過你的問題,你是否閱讀過我所鏈接的和其標題?爲每個ASP.NET WebForms頁面生成一個''標籤。在這種情況下,這個標籤得到了一個生成的名字,並且如下所述:_「**當命名容器與當前頁面不同時** [...] UniqueID屬性返回」aspnetForm「。如果你真的需要,你可以通過從htmlform繼承來創建自己的表單,然後重寫UniqueID屬性或Name屬性「_」。 – CodeCaster

+0

另外,當測試環境和生產環境中相同的代碼行爲不同時,您的測試環境很可能與您的生產配置不匹配。 – CodeCaster

回答

-1

開始編輯

哪個版本的.NET Framework的是在您的PC和測試環境,並且在服務器上使用? - 這將大大影響任何答案的正確性,爲什麼它會發生 - 特別是如果它們稍有不同。網頁上只有一種表單嗎?

編輯完

要獲得在JavaScript中使用表單名稱如下:

<script> 
    theForms = document.getElementsByTagName("form"); 

    for(i=0;i<theForms.length;i++) 
     alert(theForms[i].name); 
</script> 

如果theres只有一種形式,則:

<script> 
    theForms = document.getElementsByTagName("form"); 

    alert(theForms[0].name); 
</script> 
+0

他不問如何做到這一點。他問爲什麼會發生? –

0

可以使用停止變化ClientIdModeStatic

+1

他不問如何做到這一點。他問爲什麼會發生? –

+0

這篇文章可能對您有幫助,因爲它提供了一個不同的解決方案,以表明OP已經宣佈他們知道,即僅限javascript解決方案。請參閱http://stackoverflow.com/questions/how-to-answer –