ActionLink htmlAttributes


88

ทำงาน

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

ไม่ทำงาน - ทำไม?

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

ดูเหมือนว่าคุณจะไม่สามารถส่งบางอย่างเช่น data-icon = "gear" ไปยัง htmlAttributes

ข้อเสนอแนะ?

คำตอบ:


204

ปัญหาคือคุณสมบัติอ็อบเจ็กต์ที่ไม่ระบุชื่อของคุณdata-iconมีชื่อที่ไม่ถูกต้อง คุณสมบัติ C # ต้องไม่มีขีดกลางในชื่อ มีสองวิธีที่คุณสามารถหลีกเลี่ยงได้:

ใช้ขีดล่างแทนเส้นประ (MVC จะแทนที่ขีดล่างโดยอัตโนมัติด้วยเส้นประใน HTML ที่ปล่อยออกมา):

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

ใช้การโอเวอร์โหลดที่ใช้ในพจนานุกรม:

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

2
เครื่องหมายขีดล่างดูเหมือนจะใช้ไม่ได้กับAjax.ActionLinkผู้ช่วย
Dmitry Efimenko

1
เคล็ดลับขีดล่างฟังดูแปลกมากถ้าคุณต้องการขีดล่างในแอตทริบิวต์ html ของคุณล่ะ
Michiel

1
@MichielReyers คุณสามารถใช้โอเวอร์โหลดที่ใช้ในพจนานุกรม
marcind

1
. net ผู้ช่วยแท็กหลักทำลายปัญหาเหล่านี้ - สวัสดีจากอนาคต
niico

26

แทนที่ยัติภังค์ที่ต้องการด้วยเครื่องหมายขีดล่าง มันจะแสดงผลเป็นยัติภังค์โดยอัตโนมัติ:

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

กลายเป็น:

<form action="markets/Edit/1" class="ui-btn-right" data-icon="gear" .../>

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.