2010-07-21 18 views
8

Có thể đặt ID cụ thể trên điều khiển máy chủ ASP.NET không? Mỗi lần tôi chỉ định một ID và chạy biểu mẫu web thay đổi ID.Làm thế nào để đặt ID cụ thể cho điều khiển máy chủ trong một ASP.NET Web Form đang sử dụng một MasterPage?

Ví dụ:

<asp:TextBox ID="txtName" runat="server"></asp:TextBox> 

Gets dịch sang này:

<input id="ct100_ContentPlaceHolder1_txtName" type="text" /> 

Tôi nghĩ rằng đây là làm gì để tôi sử dụng các trang chủ, nhưng nếu như vậy làm thế nào tôi có thể chắc chắn một điều khiển sẽ có một ID nhất định (cho mục đích javascript). Tôi đã đặt id được tạo tự động trong javascript của mình và nó đang hoạt động, nhưng tôi muốn sử dụng id mà ban đầu tôi đã gán chúng. Điều này có thể không?

(Điều này là dành cho phiên bản: ASP.NET 3.5)

Trả lời

4

Đây là cách kiểm soát web của ID trong .NET trước phiên bản 4.0. Phiên bản 4.0 giới thiệu ID khách hàng mà bạn có thể đọc về here.

Bạn có thể sử dụng somthing như thế này trong JS của bạn:

var something = '<%= txtName.ClientID %>'; 
21

Bắt đầu với NET 4 bạn có quyền kiểm soát nhiều hơn về cách các ID client-side trông giống như (see this post for details).

Để buộc một ID phía máy khách cụ thể, bạn phải đặt ClientIDMode thành tĩnh. Sau đây sẽ làm cho một yếu tố <input> với id="txtName":

<asp:TextBox ID="txtName" ClientIDMode="static" runat="server"></asp:TextBox> 

Mặc dù nếu bạn làm điều này, bạn phải đảm bảo rằng bạn không có hai điều khiển với ID client-side giống hệt nhau. Kiểm tra bài viết được liên kết ở trên để biết các tùy chọn khác.

+0

Great câu trả lời - nhờ. – Stumblor

2

Bạn có thể sử dụng thuộc tính Control.ClientID trong codebehind của mình để lấy id thực sau khi được thêm vào cây điều khiển.

Lựa chọn siêu khó chịu do người tạo web asp.net tạo ra.

Các vấn đề liên quan