1

私はMvcにかなり慣れていないので、画像をAjaxアクションリンクとして使用しようとすると問題が発生しました。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));
        }

    }
}

ただし、私が使用しているバージョンには「置換」メソッドは存在しません。(彼の連絡先マネージャーアプリはMVC1アプリだったと思うので、Mvc2の問題かもしれません??)ドキュメントをすばやく検索したところ、「Replace」メソッドが廃止されていることがわかり、「MvcHtmlString.Create()」を使用することが提案されましたそのメソッドを使用するこのヘルパーのいくつかの組み合わせと、画像でレンダリングするためのリンクを取得できませんでした。正しいアクション/コントローラーと img タグをプレーンテキストとして指すリンクを取得するか、その逆のリンクをプレーンテキストとして正しくレンダリングされた img を取得します。

私が試したほとんどすべてのコンボの補足として、この特定のヘルパーにリストされている標準の文字列ではなく、タイプ MvcHtmlString を返していました。

4

1 に答える 1

3

これはおそらくMvcHtmlStringまだ存在していなかった頃のものです。メソッド thoを使用してこれを機能させることができるはずですReplace()。最初に機能するはずだった実際の文字列を取得する必要があります。

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