Asp.net mvc 2 如何将ActionLink设置为映像

Asp.net mvc 2 如何将ActionLink设置为映像,asp.net-mvc-2,Asp.net Mvc 2,我有个小问题。如何将ActionLink设置为类似以下内容的图像: <%= Html.ActionLink("English", "ChangeCulture", "Account", new {lang = "en", returnUrl = this.Request.RawUrl }, null)%> Html.ActionLink(" ", "About", "Home", new {style = "background: url('../../Content/im

我有个小问题。如何将ActionLink设置为类似以下内容的图像:

 <%= Html.ActionLink("English", "ChangeCulture", "Account",
 new {lang = "en", returnUrl = this.Request.RawUrl }, null)%>
 Html.ActionLink(" ", "About", "Home", new
 {style = "background: url('../../Content/images/img03.jpg')no-repeat center
 right;display:block; height:24px; width:24px;"})    

但对于这个例子,它不起作用。我想以旗帜图像的形式将本地化添加到我的站点。提前谢谢。

我在这里看到一些问题

首先,使用Html样式设置ActionLink的routeValues参数。在它们之间添加空对象:

Html.ActionLink(" ", "About", "Home", null, new
 {style = "background: url('../../Content/images/img03.jpg')no-repeat center
 right;display:block; height:24px; width:24px;"})
其次,您需要检查图像的url是否正确,因为您使用的是相对路径。尝试使用Url.Content来获取正确的路径


第三,url和no repeat标志之间缺少空格可能会影响浏览器的输出。

我使用html helper解决了这个问题

但我建议使用TagBuilder来实现这一点

  /// <summary>
  /// Create image representation of boolean in form of
  /// </summary>
  /// <param name="html">The HTML.</param>
  /// <param name="boolValue">if set to <c>true</c> [bool value].</param>
  /// <param name="path">The path.</param>
  /// <param name="alt">The alt.</param>
  /// <returns>
  /// html img tag
  /// </returns>
public static string ImageForBool(this HtmlHelper html, bool boolValue, string path,ImageAlt alt)
{
  string trueVal = "tick";
  string falseVal = "x";
  string img = "<img src=\"{0}\" {1}/>";
  string altTag = string.Empty;
  path += "Content/Actions/";
  if (boolValue)
  {
    altTag = (alt == null) ? "" : "alt=\"" + alt.trueOption + "\"";
    return string.Format(img, Path.Combine(path, trueVal) + ".png", altTag);
  }
  else
  {
    altTag = (alt == null) ? "" : "alt=\"" + alt.falseOption + "\"";
    return string.Format(img, Path.Combine(path, falseVal) + ".png", altTag);
  }
}
//
///创建布尔值的图像表示形式为
/// 
///HTML。
///如果设置为true[布尔值]。
///这条路。
///alt。
/// 
///html img标签
/// 
公共静态字符串ImageForBool(此HtmlHelper html、bool boolValue、字符串路径、ImageAlt-alt)
{
字符串trueVal=“tick”;
字符串false=“x”;
字符串img=“”;
string altTag=string.Empty;
路径+=“内容/动作/”;
if(布尔值)
{
altTag=(alt==null)?“”:“alt=\”“+alt.trueOption+”\“”;
返回string.Format(img,Path.Combine(Path,trueVal)+“.png”,altTag);
}
其他的
{
altTag=(alt==null)?“”:“alt=\”“+alt.falseOption+”\“”;
返回string.Format(img,Path.Combine(Path,false-val)+“.png”,altTag);
}
}
这个选项可能是最适合你的

替代方法

使用html操作链接并使用string.replace 使用您的代码:

string tag = Html.ActionLink("[toReplaceWithImage]", "ChangeCulture", "Account",
 new {lang = "en", returnUrl = this.Request.RawUrl }, null).ToString()

tag.Replace("[toReplaceWithImage]", "<img src=\"path\">");
string tag=Html.ActionLink(“[toReplaceWithImage]”、“ChangeCulture”、“Account”,
new{lang=“en”,returnUrl=this.Request.RawUrl},null)
标记.替换(“[toReplaceWithImage]”,“”);

为什么它不适用于此链接?我尝试了很多不同的方法,但老实说,我不知道如何做到这一点。当然,关于第一个ActionLink。第二个运行正常。我想知道你已经展示的第二个ActionLink如何工作,因为你已经完全弄乱了它的论点。您没有使用正确的重载。你把路由值和html属性搞混了。也许吧,但对我来说很有用。易于检查。但这不是一个问题。谢谢你的回答。也许我写得不明白。我想将第一个ActionLink设置为图像。第二个问题处理得很好。对不起,我需要你重写这个问题。我不明白你需要什么帮助。谢谢你的关注,但我已经找到了解决办法。我需要使用新的{@class=“EnglishFlag”而不是空对象。