2012-01-25 66 views
-2

我正在寫一個簡單的webform在.net 4.0框架。客戶端ID沒有得到爲asp.net控件生成

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

    <div> 
     <span>Name</span> 
     <asp:TextBox ID="txtName" runat="server"></asp:TextBox> 
    </div> 
    <div> 
     <span>Email</span> 
     <asp:TextBox ID="txtEmail" EnableViewState="false" runat="server"></asp:TextBox> 
    </div> 
    <div> 
     <asp:Button ID="btnButton" runat="server" Text="Submit" /> 
    </div> 
    </form> 
</body> 

問題是當表單在瀏覽器上呈現時,我沒有獲得服務器端控件的ClientID。這對我來說很奇怪。 在瀏覽器中的標記的部分是

<div> 
     <input type="submit" name="btnButton" value="Submit" id="btnButton" /> 
    </div> 

通知沒有clientID的。

編輯:客戶端ID像 'ctl00 $ MasterPageBody $ ctl00 $ btnButton2'

+0

生成的標記的Id屬性的值是一個客戶端ID。 – adatapost

+0

幸好,ASP.NET 4.0版本中不需要像這樣的客戶端ID。在處理更簡單的文檔結構時,客戶端ID會簡單得多。只要相信它告訴你。 –

+1

我想這不是一個無效的問題。我沒有意識到現在.net 4.0框架有CliendIdMode –

回答

0

ClientID服務器端屬性。

你會看到ClientID在客戶端上的ID屬性:

id="btnButton" 
+0

類似'ctl00 $ MasterPageBody $ ctl00 $ btnButton2' –

+0

@vaibhav - 框架無法保證它會產生這種'id'。 – Oded

+0

我想根據這些id寫一些javascript。我將如何確定框架將產生什麼樣的ID。 –

0

客戶端ID是在服務器上計算的,它永遠不會被髮送到客戶端。

+0

是的,我知道,頁面標記是從服務器本身生成的。 –

0

你需要RUNAT =「服務器」,以產生提到

+0

我在上面的例子中已經有了 –

+0

,輸入控件上沒有runat = server。 –

1

客戶端ID爲的原因,控制客戶端ID的按鈕是btnButton。另一個「ctl ...」是當你在控制檯內進行控制的時候。作爲一方不是:如果你不想改變你的id:s你可以設置clientidmode ='static'。