为ActionLink分配图标而不是文本

时间:2013-08-23 19:06:57

标签: asp.net-mvc asp.net-mvc-3 razor

我正在尝试用包含图标的类替换此处的链接文本:

 @Html.ActionLink("Edit", 
                  "EditSatelliteMeeting", 
                  "ByLaws", 
                   new { id = meeting.BLClubSatelliteMeetingId, 
                         ByLawsId = Model.ByLawsId }, 
                   new { @class = "js-openDialog", 
                         data_dialog_id = "AddSatelliteMeetingDialog",
                         data_dialog_title = "Edit  Satellite Meeting" })

我知道要做到这一点,常见的解决方案是使用@Url.Action

但是当我尝试这样做时,我得到一个解析器错误。

这打破了

<a href="@Url.Action("EditSatelliteMeeting", "ByLaws", 
                     new { id = meeting.BLClubSatelliteMeetingId, 
                           ByLawsId = Model.ByLawsId }, 
                     new { @class = "js-openDialog icon edit", 
                          data_dialog_id = "AddSatelliteMeetingDialog",
                          data_dialog_title = "Edit  Satellite Meeting" })"></a>

这样做

 <a href="@Url.Action("EditSatelliteMeeting", "ByLaws", 
                       new { id = meeting.BLClubSatelliteMeetingId, 
                             ByLawsId = Model.ByLawsId, 
                             @class = "js-openDialog icon edit", 
                             data_dialog_id = "AddSatelliteMeetingDialog",
                             data_dialog_title = "Edit  Satellite Meeting" })"></a>

2 个答案:

答案 0 :(得分:3)

如果您使用a + Url.Action代替Html.ActionLink,则可以将HTML属性直接放入a-tag。

<a class = "js-openDialog icon edit"
   data_dialog_id = "AddSatelliteMeetingDialog"
   data_dialog_title = "Edit  Satellite Meeting"
   href='@Url.Action("EditSatelliteMeeting", "ByLaws", 
             new { id = meeting.BLClubSatelliteMeetingId, 
                   ByLawsId = Model.ByLawsId })'>
    <!-- icon here -->
</a>

没有Url.Action重载包含HTML属性,这是有道理的,因为您无法将HTML属性放入URL字符串中。

答案 1 :(得分:0)

我最近通过尝试这个得到了不错的结果 - 在localhost上工作!:

 <a href="../Controller(Home)/View(Index)"><span class="glyphicon glyphicon-home"></span></a>