2010-03-24 37 views
7

Tôi là yêu cầu ASP.NET MVC, việc cập nhật/tài liệu đôi khi có thể phức tạp, vì vậy có thể tôi không nhận được gì ... Tôi muốn sử dụng một TextBoxFor(), và làm việc với LabelFor() vv là tốt, tất cả các phép thuật xảy ra cho tôi.Tham chiếu ID của một kiểm soát được tạo bằng TextBoxFor()

Nhưng nếu tôi có thể tạo ...

<%=Html.TextBoxFor(x => x.LastName) %> 

Và muốn làm điều gì đó tốt đẹp với jQuery, làm thế nào tôi sẽ nhận được ID của điều khiển được tạo ra? Tôi có thể thêm một lớp CSS và sử dụng để đính kèm jQuery của tôi, nhưng đối với một cái gì đó tôi đang làm tôi muốn ID ... vì vậy tôi có thể làm điều gì đó như:

$('#LastName').(...) 

Tôi biết tôi có thể làm việc nó ra trong trường hợp này, và hack nó bằng tay, nhưng có cách nào khác không?

+1

Điều này không làm việc? Khi tôi thử nó, có vẻ như tạo ra ID như tôi mong đợi nó được đặt tên. Khi bạn xem nguồn HTML trên trang, đầu ra 'TextBoxFor()' của bạn là gì? – Amadiere

+0

Điều này làm việc và tạo ID mà bạn mong đợi, nhưng tôi nghĩ rằng nếu khuôn khổ có thể làm việc cho một hộp văn bản, nó sẽ có thể làm việc ở những nơi khác ... Đặc biệt hữu ích khi ID được tạo ra vào một mảng để bạn kết thúc bằng một ID như "Websites_0__Url". Theo cách thủ công, tôi chỉ nghĩ MVC phải biết điều này cho tôi và tiết kiệm cho tôi những sai lầm;) –

Trả lời

7

Vì MVC4 có một cách tích hợp để làm điều đó - @Html.IdFor().

Here is a sample của việc sử dụng nó:

@Html.IdFor(m => m.Filters.Occurred.From) 

và kết quả là như

Filters_Occurred_From 
12

Tôi nghĩ bạn có thể làm điều gì đó như:

<%=Html.TextBoxFor(x => x.LastName, new { id = "LastName" })%> 

Overloads of TextBoxFor

+0

Điều này sẽ làm việc trong hầu hết các trường hợp, và tôi nghĩ rằng tôi có liên kết giữa ID và Tên quá vững chắc trong đầu, tất nhiên tôi có thể sửa đổi nó! Tôi nghĩ rằng nó sẽ có vấn đề khi nó là một mảng mà MVC làm việc ra các ID kiểm soát và bạn đã kết thúc với vv –

+0

Một cách khác để làm điều đó, là sử dụng MvcContrib, giới thiệu các phương pháp IdFor, cho phép bạn làm <% = this.IdFor (x => x.LastName)%> đó là huyền diệu! –

+0

Thay vì tạo các định danh trường theo cách thủ công, tôi muốn giới thiệu phương pháp tiếp cận của Colin hoặc nếu bạn không muốn phụ thuộc vào MVCContrib thì http://stackoverflow.com/questions/3065307/client-id-for-property-asp-net-mvc – JCallico

0

Là một địa điểm ưa thích có vẻ là Html.Textbox() mã sẽ tạo ra một id, sao chép tên điều khiển cho bất cứ điều gì bắt đầu bằng một chữ cái (az). Tuy nhiên, nếu 'tên' của bạn bắt đầu bằng một số, nó sẽ đơn giản là không bận tâm.

Đây là một 'tính năng' tuyệt vời đã khiến tôi đau buồn trong một giờ qua.

-1

Theo mặc định, id điều khiển của bạn là giá trị ràng buộc mô hình của bạn, Bạn cũng có thể Chỉ cần sử dụng firebug. chọn điều khiển và nhận theo id điều khiển mặc định.

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