ActionLink htmlAttributes


87

LÀM

<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 KHÔNG?

@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 một cái gì đó như data-icon = "gear" vào htmlAttributes?

Gợi ý?

Câu trả lời:


203

Vấn đề là thuộc tính đối tượng ẩn danh của bạn data-iconcó tên không hợp lệ. Thuộc tính C # không được có dấu gạch ngang trong tên của chúng. Có hai cách bạn có thể giải quyết vấn đề đó:

Sử dụng dấu gạch dưới thay vì dấu gạch ngang (MVC sẽ tự động thay thế dấu gạch dưới bằng dấu gạch ngang trong HTML được 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 có trong từ điển:

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

2
Gạch dưới dường như không làm việc với Ajax.ActionLinknhững người giúp đỡ
— Dmitry Efimenko

1
Thủ thuật gạch dưới nghe thật kỳ lạ, nếu bạn muốn có dấu gạch dưới trong thuộc tính html của mình thì sao?
— Michiel

1
@MichielReyers bạn có thể sử dụng sự quá tải mà mất trong các từ điển
— marcind

1
.net Core Tag Helpers tiêu diệt tất cả những vấn đề này - xin chào từ tương lai.
— niico

26

Thay thế dấu gạch nối mong muốn bằng dấu gạch dưới; nó sẽ tự động được hiển thị dưới dạng dấu 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" .../>

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.