2012-05-08 24 views
5

Tôi hy vọng đây chỉ là một lỗi nhưng đã tìm ra có lẽ đó chỉ là tôi.MVC 4 Từ điển hành động liên kết htmlAttributes không hoạt động

@Html.ActionLink("Test", "Test", "Test", 
    new { id = 1 }, 
    new Dictionary<string, object> { { "class", "ui-btn-test" }, { "data-icon", "gear" } }) 

Điều này có tác dụng nhưng nếu tôi muốn thêm các thuộc tính khác, tôi phải thực hiện thủ công!

@Html.ActionLink("Test", "Test", "Test", 
    new { id = 1 }, 
    new { @class="ui-btn-test", data_icon="gear", data_new_attr="someextra" }) 

Việc đầu tiên không hoạt động nữa và tôi cần ứng dụng này hoạt động. Công trình thứ hai nhưng không quan tâm đến nó, bởi vì tôi đang cố thêm nhiều thuộc tính hơn, đối tượng sẽ không hoạt động trừ khi được nói khác đi.

+0

Câu hỏi là gì? Cách thứ hai là cách ưu tiên để chỉ định 'htmlAttributes'. –

+0

Trong MVC 4, cách ưa thích đầu tiên của tôi không hoạt động chính xác. Tôi nhận được một cái gì đó như thế này như là các thuộc tính. Home

+0

Tại sao bạn muốn làm điều đó theo cách đầu tiên. Cách thứ hai hoạt động, được chấp nhận thực hành, và dễ đọc hơn. –

Trả lời

8

Không có phương pháp trợ giúp nào được cung cấp ActionLink chấp nhận các tham số như bạn đang chỉ định. Những người duy nhất có một tham số kiểu IDictionary cho các thuộc tính html mong đợi một RouteValueDictionary cho các giá trị tuyến đường. Vì nó là, bạn đang gọi một chức năng được điều trị từ điển của bạn như một đối tượng ẩn danh

Hãy thử

@Html.ActionLink("Test", "Tesz", "Test", 
new RouteValueDictionary(new {id = 1}), 
new Dictionary<string, object> { { "class", "ui-btn-test" }, { "data-icon", "gear" } }) 

Hoặc thực hiện phương pháp khuyến nông của riêng bạn.

+0

Điều đó đã thành công tuyệt vời! Tôi sắp thực hiện phương pháp mở rộng của riêng mình, nhưng không muốn viết lại tất cả các liên kết hành động của mình. –

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