2010-09-08 3 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() –

ответ

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

Ваше решение вообще не работает –

+0

+1 Помогло мне тоже. Спасибо :) –

1

я есть создать помощника для этого решения. Таким образом, вы не можете включить изображение в actionLink. Но с помощью этого вспомогательного класса u можно просто добавить якорь с изображением для просмотра.

с использованием системы; с использованием 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)); 
     } 

    } 
} 

удачи

12

@Trimack является 100% правильно ж/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 как механизм просмотра, не так ли? –

1

Если вы хотите отобразить мульти изображений, которые можно использовать Html.ActionLink свойство в вашем View, как показано ниже. В этом примере я использую Detail/Edit/Delete images в качестве кнопки в столбце Действие.

Примечание: Тип Title, Controller и 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> 

Для полного примера, вы можете посмотреть на здесь: How to use WebGrid in a cshtml view?

С уважением.

0

Вместо того, чтобы использовать @ Html.ActionLink ("LINKNAME", "действие", "контроллер"), вы можете использовать следующие:

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

"изображения" моя папка для хранения изображений. @Url.Content() должен знать путь. Вы можете передать свое действие и контроллер для этого действия до @Url.Action(). @Url.Action() работает аналогично @Html.ActionLink(). Теперь ваша ссылка будет заменена изображением.

+0

Это код

Смежные вопросы