2010-11-05 22 views
74

TRÌNHActionLink htmlAttributes

<a href="@Url.Action("edit", "markets", new { id = 1 })" 
      data-rel="dialog" data-transition="pop" data-icon="gear" class="ui-btn-right">Edit</a> 

KHÔNG LÀM VIỆC - TẠI SAO?

@Html.ActionLink("Edit", "edit", "markets", new { id = 1 }, new {@class="ui-btn-right", data-icon="gear"}) 

Có vẻ như bạn không thể chuyển thứ gì đó như data-icon = "gear" vào htmlAttributes?

Đề xuất?

Trả lời

175

Sự cố là thuộc tính đối tượng ẩn danh data-icon của bạn có tên không hợp lệ. Thuộc tính C# không thể có dấu gạch ngang trong tên của chúng. Có hai cách để bạn có thể nhận được xung quanh rằng:

Sử dụng một dấu gạch dưới thay vì dấu gạch ngang (MVC sẽ tự động thay thế gạch với một dấu gạch ngang trong HTML phát ra):

@Html.ActionLink("Edit", "edit", "markets", 
     new { id = 1 }, 
     new {@class="ui-btn-right", data_icon="gear"}) 

Sử dụng quá tải mà mất trong một từ điển:

@Html.ActionLink("Edit", "edit", "markets", 
     new { id = 1 }, 
     new Dictionary<string, object> { { "class", "ui-btn-right" }, { "data-icon", "gear" } }); 
+0

Điều này thực sự đã giúp tôi - cảm ơn. – Darbio

+3

Thủ thuật gạch dưới dường như không hoạt động với MVC 2 –

+2

Dấu gạch dưới dường như không hoạt động với các trình trợ giúp 'Ajax.ActionLink' – Dmitry

24

Thay thế dấu gạch ngang mong muốn bằng dấu gạch dưới; nó sẽ tự động được trả lại như một gạch nối:

@Html.ActionLink("Edit", "edit", "markets", 
    new { id = 1 }, 
    new {@class="ui-btn-right", data_icon="gear"}) 

trở thành:

<form action="markets/Edit/1" class="ui-btn-right" data-icon="gear" .../> 
-4
@Html.ActionLink("display name", "action", "Contorller" 
    new { id = 1 },Html Attribute=new {Attribute1="value"}) 
Các vấn đề liên quan