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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.