2010-09-08 186 views
6

如何在html.actionlink中插入图片 - asp.net mvc?如何使用HTML.ActionLink插入图像?

我这样做,但它没有奏效。

<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" /> 

+1

我强烈建议使用Url.Action() – 2011-05-10 21:06:42

回答

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

你的解决方案根本不起作用 – 2010-09-08 13:12:39

+0

+1也帮助了我。谢谢:) – 2010-11-30 04:47:56

1

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

using System; using System.Text; using System.Web.Mvc; using System.Web.Mvc.Html;使用System.Web.Routing的 ; using System.Web; using 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)); 
     } 

    } 
} 

好运

12

@Trimack是100%正确的W/MVC2。如果人们正在寻找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> 
+0

我猜你正在使用Razor作为视图引擎,对吧? – 2012-09-07 20:55:37

1

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

注:类型TitleControllerAction根据您的项目名称在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> 

对于完整的例子,你可以看看这里:How to use WebGrid in a cshtml view?

问候。

0

而不是使用@ Html.ActionLink( “链接名称”, “行动”, “控制器”),可以使用下面的:

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

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

+0

这是完整的代码 2015-09-29 06:58:53