如何使用HTML.ActionLink插入图像?

时间:2010-09-08 13:02:04

标签: asp.net-mvc image html.actionlink

如何在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" />

5 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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> 

答案 2 :(得分:1)

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

使用System;     使用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));
        }

    }
}
祝你好运

答案 3 :(得分:1)

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

注意:根据您的项目在Title中输入ControllerActionHtml.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>

完整示例,您可以在此处查看:How to use WebGrid in a cshtml view?

问候。

答案 4 :(得分:0)

您可以使用以下内容,而不是使用@ Html.ActionLink(&#34; linkname&#34;,&#34;操作&#34;,&#34;控制器&#34;)而不是:

@Url.Content()

&#34;图像&#34;是我存储图像的文件夹。 @Url.Action()是了解路径。您可以将操作和该操作的控制器传递给@Url.Action()@Html.ActionLink().nav li { display: inline; } 的工作方式类似。现在您的链接将被图像替换。