2012-03-18 17 views
1

次の作業コードをAjaxに変更しようとしています。@ Ajax.ActionLinkによる動的イメージと書式設定パラメータ

<a href="@Url.Action("Index", new { pn = pc })"> 
    <img src="@Url.Content("~/Photos/" + @photoFile[pc])", id = "imgnb" width = "100px" height = "150px" alt = "Photo" /></a> <br /> 

コードは、文字列[]変数を処理する必要がある、@photoFile [PC])、及びフォーマット取る、(ID = "imgnb" 幅= "100pxに" 高さ= "150ピクセル" ALT = "写真" )。 (imgnbはCSSで、画像の境界線はありません)

Soe MoeはここにAjaxヘルパーを作成しましたProblem with ajax.actionlink helper, return string

彼のコードは、パラメタなしの静的な画像でうまく機能します。

  @Ajax.ImageActionLink("../../Photos/Children/albersona1.jpg", "Index", new { pn = pc }, new AjaxOptions 
    { 
     UpdateTargetId = "Selected Thumbnail", 
     InsertionMode = InsertionMode.Replace, 
     HttpMethod = "GET" }) 

このヘルパーを変更して、URL.ActionをAjaxに変換し、動的イメージと書式設定パラメータを処理する方法を知っている人はいませんか?

大変助かりました。

おかげで、ジョー

答えて

3
public static class ImageActionLinkHelper 
{ 
    public static IHtmlString ImageActionLink(
     this AjaxHelper helper, 
     string imageUrl, 
     string actionName, 
     object routeValues, 
     object htmlAttributes, 
     AjaxOptions ajaxOptions 
    ) 
    { 
     var builder = new TagBuilder("img"); 
     builder.MergeAttribute("src", imageUrl); 
     builder.MergeAttributes(new RouteValueDictionary(htmlAttributes)); 
     var link = helper.ActionLink("[replaceme]", actionName, routeValues, ajaxOptions); 
     var html = link.ToHtmlString().Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing)); 
     return new HtmlString(html); 
    } 
} 

してから:マーク・ダリンのいつもの権利として

@Ajax.ImageActionLink(
    Url.Content("~/Photos/" + photoFile[pc]), 
    "Index", 
    new { pn = pc }, 
    new { id = "imgnb", width = "100px", height = "150px", alt = "Photo" }, 
    new AjaxOptions 
    { 
     UpdateTargetId = "foo" 
    } 
) 
+0

は、それは素晴らしい作品。 "InsertionMode = InsertionMode.Replace、HttpMethod =" GET "。ありがとう、Joe – Joe

+0

その他の場合は、" using System.Web.Routing; "を拡張子.csに追加する必要がありますSystem.Web.Mvc.Ajaxを使用して、System.Web.Mvcを使用します。 – Joe

関連する問題