我是Mvc的新手并遇到问题尝试使用Image作为Ajax Action链接。我找到了一个帮助者,我相信是由斯蒂芬·沃尔特发布的......
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
namespace Helpers
{
public static class ImageActionLinkHelper
{
public static string ImageActionLink(this AjaxHelper helper, string imageUrl, string altText, string actionName, object routeValues, AjaxOptions ajaxOptions)
{
var builder = new TagBuilder("img");
builder.MergeAttribute("src", imageUrl);
builder.MergeAttribute("alt", altText);
var link = helper.ActionLink("[replaceme]", actionName, routeValues, ajaxOptions);
return link.Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing));
}
}
}
然而,我正在使用的版本中不存在“替换”方法。 (也许是一个Mvc2问题,因为我相信他的联系人管理器应用程序是一个MVC1应用程序?)快速搜索文档,我发现“替换”方法已经过时,并且建议使用“MvcHtmlString.Create()”我尝试过使用该方法在这个帮助器中的许多组合,我无法获得使用图像渲染的链接。我要么得到一个指向正确的动作/控制器的链接和img标签作为纯文本,反之亦然正确呈现img与链接作为纯文本。
就像我试过的几乎所有组合的旁注一样,我返回的是一个MvcHtmlString类型,而不是这个特定帮助器中列出的标准字符串。
答案 0 :(得分:3)
这可能是从MvcHtmlString
尚不存在的时候开始的。您应该能够使用Replace()
方法使其工作,只需要获取它应该首先使用的实际字符串:
var link = helper.ActionLink("[replaceme]", actionName, routeValues, ajaxOptions).ToString();
return link.Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing));