6

如何在 html.actionlink - asp.net mvc 中插入图像?

我这样做了,但它不起作用。

<a href="<%= Html.ActionLink("search", "Search", new { searchText = "txtSearch" }, null); %>">
        <img alt="searchPage" style="vertical-align: middle;" height="17px"
            src="../../Stylesheets/search.PNG" title="search" />

4

5 回答 5

14

您完全滥用了ActionLink助手。助手实际上产生了整个<a href=".." ></a>标签。

在这种情况下,您真正​​想要使用的是(除了您自己的书面助手):

<a href="<%= Url.Action("Search", new { searchText = "txtSearch" }) %>">
    <img alt="searchPage" style="vertical-align: middle;" height="17px"
        src="../../Stylesheets/search.PNG" title="search" />
</a>
于 2010-09-08T13:06:58.823 回答
12

@Trimack 使用 MVC2 100% 正确。如果人们正在寻找 MVC3 等价物,这里是......

<a href="@Url.Action("Search", new { searchText = "txtSearch" })">
    <img alt="searchPage" style="vertical-align: middle;" height="17px" src="../../Stylesheets/search.PNG" title="search" /> 
</a> 
于 2011-05-10T21:04:17.970 回答
1

我为此解决方案创建了一个助手。所以你不能将图像包含到 actionLink 中。但是使用这个助手类,你可以简单地添加带有图像的锚点来查看。

使用系统;使用 System.Text;使用 System.Web.Mvc;使用 System.Web.Mvc.Html;使用 System.Web.Routing;使用 System.Web;使用 System.Security.Policy;

namespace Helpers
{
    public static class ActionWithImageHelper
    {
        public static string AnchorIm(this HtmlHelper helper)
        {

            var builder = new TagBuilder("img");
            var link = helper.ActionLink("[replaceInnerHTML]", "replaceAction").ToHtmlString();


                builder.MergeAttribute("src", "<imagePath>");
                builder.MergeAttribute("alt", "<altText>");

                var renderedLink = link.Replace("replaceAction", "<>");
                link = renderedLink;


            return link.Replace("[replaceInnerHTML]",builder.ToString(TagRenderMode.SelfClosing));
        }

    }
}

祝你好运

于 2010-09-09T06:29:42.020 回答
1

如果要显示多张图像,可以使用如下所示Html.ActionLink的属性。View在此示例中,我使用详细/编辑/删除图像作为操作列下的按钮。

注意:键入TitleController并根据您的项目Action命名。Html.ActionLink如果您想使用空标题,只需为它们键入“”。

....
//for using multiple Html.ActionLink in a column using Webgrid
grid.Column("Action", format: (item) =>
 new HtmlString(
       Html.ActionLink("Show Details", "Edit", "Admin", new
       {
           applicantId = item.ApplicantID,               
           title = "Detail",
           @class = "icon-link",
           style = "background-image: url('../../Content/icons/detail.png')"
       }, null).ToString() +
       Html.ActionLink("Edit Record", "Edit", "Admin", new
       {
           applicantId = item.ApplicantID, 
           title = "Edit",
           @class = "icon-link",
           style = "background-image: url('../../Content/icons/edit.png')"
       }, null).ToString() +
       Html.ActionLink("Delete Record", "Edit", "Admin", new
       {
           applicantId = item.ApplicantID,
           title = "Delete",
           @class = "icon-link",
           style = "background-image: url('../../Content/icons/delete.png')"
       }, null).ToString()
 )
)
....


<style type="text/css">
    a.icon-link {
        background-color: transparent; 
        background-repeat: no-repeat; 
        background-position: 0px 0px;
        border: none;
        cursor: pointer; 
        width: 16px;
        height: 16px;
        margin-right: 8px; 
        vertical-align: middle;
    }
</style>

对于完整的示例,您可能会在这里查看:如何在 cshtml 视图中使用 WebGrid?

问候。

于 2013-11-03T10:18:17.460 回答
0

而不是使用 @Html.ActionLink("linkname","action","controller") 您可以使用以下内容:

<a href='@Url.Action("action", "controller")'>

“图像”是我用于存储图像的文件夹。@Url.Content()就是知道路径。您可以将您的操作和该操作的控制器传递给@Url.Action(). @Url.Action()工作原理与@Html.ActionLink(). 现在您的链接将被图像替换。

于 2015-09-29T06:57:21.440 回答