1

我对 Mvc 还很陌生,在尝试使用 Image 作为 Ajax Action 链接时遇到了问题。我找到了一个助手,我相信它是由 Stephen Walther 发布的……

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 类型,而不是此特定帮助程序中列出的标准字符串。

4

1 回答 1

3

这可能是MvcHtmlString从不存在的时候开始的。您应该能够使用Replace()tho 方法完成这项工作,只需要首先获取它应该使用的实际字符串:

var link = helper.ActionLink("[replaceme]", actionName, routeValues, ajaxOptions).ToString();
return link.Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing));
于 2010-07-31T02:58:47.077 回答