Реализация ASP.NET MVC Ajax.ActionLink с изображением - PullRequest
1 голос
/ 16 мая 2011

Я пытаюсь реализовать помощник Ajax согласно предыдущему вопросу на ASP.NET MVC Ajax.ActionLink с изображением

Использование Asp.net MVC 3

Когда я пытаюсь добавить класс, строка возвращает link.Replace ("[rep .... дает и ошибка для кода" link.replace ", говоря, что" System.Web.Mvc.MvcHtmlString 'не содержит определение для "Заменить" "

Кто-нибудь может посоветовать это? Я также получаю ту же ошибку, если я загружаю указанный проект

Спасибо

Mark

Ответы [ 2 ]

1 голос
/ 16 мая 2011

Вы можете найти это полезным. Это позволяет стилизацию и другие параметры:

public static class ImageHelpers
{
    /// <summary>
    /// return image link
    /// </summary>
    /// <param name="helper"></param>
    /// <param name="id">Id of link control</param>
    /// <param name="controller">target controller name</param>
    /// <param name="action">target action name</param>
    /// <param name="strOthers">other URL parts like query string, etc</param>
    /// <param name="strImageURL">URL for image</param>
    /// <param name="alternateText">Alternate Text for the image</param>
    /// <param name="strStyle">style of the image like border properties, etc</param>
    /// <returns></returns>
    public static string ImageLink(this HtmlHelper helper, string id, string controller, string action, string strOthers, string strImageURL, 
        string alternateText, string strStyle, string cssClass = "imagelink")
    {
        return ImageLink(helper, id, controller, action, strOthers, strImageURL, alternateText, strStyle, null, cssClass);
    }
    /// <summary>
    /// return image link
    /// </summary>
    /// <param name="helper"></param>
    /// <param name="id">Id of link control</param>
    /// <param name="controller">target controller name</param>
    /// <param name="action">target action name</param>
    /// <param name="strOthers">other URL parts like query string, etc</param>
    /// <param name="strImageURL">URL for image</param>
    /// <param name="alternateText">Alternate Text for the image</param>
    /// <param name="strStyle">style of the image like border properties, etc</param>
    /// <param name="htmlAttributes">html attributes for link</param>
    /// <returns></returns>
    public static string ImageLink(this HtmlHelper helper, string id, string controller, string action, string strOthers, string strImageURL,
        string alternateText, string strStyle, object htmlAttributes, string cssClass = "imagelink")
    {
        var portalModel = ContextCache<PortalModel>.Get(ContextCache.PortalModelSessionCache);

        // Create tag builder
        var divBuilder = new TagBuilder("div");
        divBuilder.AddCssClass(cssClass);

        var aBuilder = new TagBuilder("a");

        // Create valid id
        if (!string.IsNullOrEmpty(id))
            aBuilder.GenerateId(id);

        // Add attributes
        aBuilder.MergeAttribute("href", "/" + portalModel.PortalTag + "/" + controller + "/" + action + strOthers); //form target URL
        aBuilder.InnerHtml = "<img src='" + strImageURL + "' alt='" + alternateText + "' class='" + cssClass + "' style='border: none;'/>" + alternateText; //set the image as inner html
        aBuilder.MergeAttributes(new RouteValueDictionary(htmlAttributes));

        divBuilder.InnerHtml = aBuilder.ToString(TagRenderMode.Normal); //to add </a> as end tag

        // Render tag
        return divBuilder.ToString(TagRenderMode.Normal);
    }
}
0 голосов
/ 16 мая 2011

Преобразовать его в обычную строку и обратно:

return new MvcHtmlString(link.ToString().Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing))); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...