2012-02-08 30 views
23

tôi đang cố gắng để thiết lập một id lĩnh vực như sau:Làm thế nào tôi có thể thiết lập id sử dụng Html.EditorFor với MVC3

@Html.EditorFor(x => x.Order, new { id = string.Format("Order_{0}", Model.Row) }) 

nhưng kết quả này trong những điều sau đây và có vẻ như id của tôi không được thiết lập:

<input type="text" value="334" name="item.Order" id="item_Order" class="text-box single-line"> 

Có ai có ý tưởng tôi đang làm sai không. Tôi đã kiểm tra các định dạng cho phép cho EditorFor và xem trên google ví dụ nhưng tôi không thể thấy bất cứ điều gì phù hợp với những gì tôi cần.

+0

Thêm '@' trước 'id' như '@ id =' – Hadas

+0

id KHÔNG phải là từ khóa trong C# vì vậy không cần sử dụng @, điều này chỉ cần thiết với các từ khóa như @class – Jaap

Trả lời

30

Bạn nên thay đổi để

@Html.TextBoxFor(x => x.Order, new { id = string.Format("Order_{0}", Model.Row) }) 

Tham số thứ hai của @Html.EditorFor là để xem thông tin, không cho các thuộc tính html

+0

Cảm ơn bạn. Điều này làm việc tuyệt vời. Bây giờ tôi tự hỏi sự khác biệt giữa Html.EditorFor và Html.TextBoxFor là gì. Sự khác biệt mà EditorFor có sử dụng các mẫu không? –

+1

Có, EditorFor dành cho loại/mẫu tùy chỉnh. – dohaivu

+21

Nhưng còn câu hỏi ban đầu thì sao? Điều gì nếu bạn muốn/cần phải sử dụng EditorFor - Làm thế nào sau đó để thiết lập các id? – JonK

2

Tôi không chắc liệu bạn có thể ghi đè thuộc tính ID khi sử dụng những người trợ giúp được nhập mạnh mẽ hay không. Nhưng bạn có thể sử dụng loại không phải kiểu máy khác:

@Html.Editor(string.Format("Order_{0}", Model.Row), Model.Order) 

Điều này sẽ sử dụng tham số đầu tiên làm ID và giá trị thứ hai làm giá trị mặc định.

3

Bạn đã cố gắng tạo ra một mẫu biên tập viên cho x.Order của bạn?

có điều này trên mẫu soạn thảo của bạn:

<input type="text" id="@ViewData["id"]"> 

và sử dụng này trên trang xem của bạn:

@Html.EditorFor(x => x.Order, new { id = string.Format("Order_{0}", Model.Row) }) 
13
@Html.EditorFor(x => x.Order, null, string.Format("Order_{0}", Model.Row)) 
+5

Đây phải là câu trả lời được chấp nhận vì câu trả lời cho câu hỏi thực sự được hỏi, thay vì thay đổi câu hỏi. – ChrisFox

3

Tôi biết câu hỏi này là khá cũ, nhưng tất cả những gì cần thiết để làm là như sau:

@Html.EditorFor(modelItem => item.EndDate, 
       new { htmlAttributes = new { @class = "form-control", @id = @endID } }) 

Bạn có thể cho nó bất kỳ lớp hoặc id nào bạn muốn/cần. Tôi cũng có điều này trước đó trong trang của mình để tạo ID khác cho mỗi mục:

string endID = "end-" + @item.ID; 

Hy vọng điều này sẽ giúp ai đó trong tương lai.

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