【问题标题】:Implementing ASP.NET MVC Ajax.ActionLink with Image用图像实现 ASP.NET MVC Ajax.ActionLink
【发布时间】:2011-05-16 12:24:57
【问题描述】:

我正在尝试按照ASP.NET MVC Ajax.ActionLink with Image 的上一个问题实现 Ajax 助手

使用 Asp.net MVC 3

当我尝试添加类时,return link.Replace("[rep.... “替换”的定义“

任何人都可以就此提出建议吗?如果我下载引用的项目,我也会得到同样的错误

谢谢

标记

【问题讨论】:

    标签: asp.net asp.net-mvc-3


    【解决方案1】:

    您可能会发现这很有帮助。它允许样式和其他选项:

    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);
        }
    }
    

    【讨论】:

    • 谢谢,但这似乎是针对 HtmlHelper 的?是否有与 AjaxHelper 一起使用的版本?
    【解决方案2】:

    将其转换为常规字符串并再次返回:

    return new MvcHtmlString(link.ToString().Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing)));

    【讨论】:

    • 谢谢,我不太明白你的评论,你能把要替换的全文给我看吗?
    • 感谢 Adam,我已经尝试过了,但 MvcString 部分出现错误。这是在哪个程序集中?
    • 哎呀!它是 MvcHtmlString(教我用手机做哈哈)
    猜你喜欢
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    相关资源
    最近更新 更多