C# MVC3图像按钮

C# MVC3图像按钮,c#,asp.net-mvc-3,razor,C#,Asp.net Mvc 3,Razor,有没有办法让@Html.actionLink成为一个点击的图像,而不仅仅是一个超链接?目前,我们有一个旧版本,它有一个onclick属性链接到一个代码隐藏,因此需要将其转换为链接到控制器的链接,而不是MVC3中不再存在的代码隐藏 有没有办法让@Html.actionLink成为一个点击的图像,而不仅仅是一个超链接 不,但是你可以写一个生成图像或任何你喜欢的东西的脚本。事实上,现在我认为你可以将CSS类应用于thins anchor,它将背景图像应用于它,并固定宽度和高度。我只是不知道如何处理te

有没有办法让@Html.actionLink成为一个点击的图像,而不仅仅是一个超链接?目前,我们有一个旧版本,它有一个onclick属性链接到一个代码隐藏,因此需要将其转换为链接到控制器的链接,而不是MVC3中不再存在的代码隐藏

有没有办法让@Html.actionLink成为一个点击的图像,而不仅仅是一个超链接

不,但是你可以写一个生成图像或任何你喜欢的东西的脚本。事实上,现在我认为你可以将CSS类应用于thins anchor,它将
背景图像应用于它,并固定宽度和高度。我只是不知道如何处理text=>IIRC
Html。ActionLink
强制您传递一个非空的
linkText
参数作为第一个参数。最后,定制HTML助手似乎不是一个坏主意。

@使用(HTML.BeginForm())
 @using (Html.BeginForm())
 {
  <p>
   <input type="image" value="submit" src="../../Images/login_button.png" alt="submit Button">
  </p>
 }
{

}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Web;
使用System.Web.Helpers;
使用System.Web.Mvc;
命名空间智能基础设施
{
公共静态类Html
{
/// 
///使用可单击的图像而不是文本创建和操作链接。
/// 
/// 
///控制器
///行动
///参数
///图像源
///备选文本(可选)
///带有嵌套图像标记的HTML锚定标记。
公共静态MvcHtmlString ActionImage(此HtmlHelper帮助程序、字符串控制器、字符串操作、对象参数、字符串src、字符串alt=“”、字符串标题=“”)
{
标记生成器标记生成器=新标记生成器(“img”);
UrlHelper UrlHelper=新的UrlHelper(helper.ViewContext.RequestContext);
字符串url=urlHelper.Action(操作、控制器、参数);
字符串imgUrl=urlHelper.Content(src);
字符串图像=”;
StringBuilder html=新的StringBuilder();
//构建图像标签。
tagBuilder.MergeAttribute(“src”,imgUrl);
tagBuilder.MergeAttribute(“alt”,alt);
tagBuilder.MergeAttribute(“标题”,标题);
image=tagBuilder.ToString(TagRenderMode.SelfClosing);
html.Append(“”);
返回MvcHtmlString.Create(html.ToString());
}
}
}

正如Dimitrov所说,您可以为此编写一个自定义帮助程序,但我只会为您经常使用它而烦恼,如果它只是用来替换一个按钮,我只会使用一个普通的锚定标记并设置href vial@Url.Action(),它会像@Html.ActionLink一样将您指向一个控制器/操作。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Helpers;
using System.Web.Mvc;

namespace SMART.Infrastructure
{
    public static class Html
    {
        /// <summary>
        /// Creates and Action link with a clickable image instead of text.
        /// </summary>
        /// <param name="helper"></param>
        /// <param name="controller">Controller</param>
        /// <param name="action">Action</param>
        /// <param name="parameters">Parameters</param>
        /// <param name="src">Image source</param>
        /// <param name="alt">Alternate text(Optional)</param>
        /// <returns>An HTML anchor tag with a nested image tag.</returns>
        public static MvcHtmlString ActionImage(this HtmlHelper helper, String controller, String action , Object parameters, String src, String alt = "", String title = "")
        {
            TagBuilder tagBuilder = new TagBuilder("img");
            UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
            String url = urlHelper.Action(action, controller, parameters);
            String imgUrl = urlHelper.Content(src);
            String image = "";
            StringBuilder html = new StringBuilder();

            // build the image tag.
            tagBuilder.MergeAttribute("src", imgUrl);
            tagBuilder.MergeAttribute("alt", alt);
            tagBuilder.MergeAttribute("title", title);
            image = tagBuilder.ToString(TagRenderMode.SelfClosing);

            html.Append("<a href=\"");
            html.Append(url);
            html.Append("\">");
            html.Append(image);
            html.Append("</a>");

            return MvcHtmlString.Create(html.ToString());
        }
    }
}