MVC 自定义标签,给Html.ActionLink加上支持图片链接的功能

转载:http://blog.csdn.net/niewq/article/details/17537873

Html.ActionLink只支持文字链接,现在我们利用C#的扩展方法写一个Html.ActionLinkWithImage()让其支持图片链接的功能。
一、首先新建一个静态类,将命名空间在改在System.Web.Mvc下,代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace System.Web.Mvc
{
    public static class MyHelpler
    {
        public static MvcHtmlString ActionLinkWithImage(this HtmlHelper html, string imgSrc, string actionName)
        {
            var urlHelper = new UrlHelper(html.ViewContext.RequestContext); 

            string imgUrl = urlHelper.Content(imgSrc);
            TagBuilder imgTagBuilder = new TagBuilder("img");
            imgTagBuilder.MergeAttribute("src", imgUrl);
            string img = imgTagBuilder.ToString(TagRenderMode.SelfClosing); 

            string url = urlHelper.Action(actionName); 

            TagBuilder tagBuilder = new TagBuilder("a")
            {
                InnerHtml = img
            };
            tagBuilder.MergeAttribute("href", url); 

            return new MvcHtmlString(tagBuilder.ToString(TagRenderMode.Normal));
        }
        public static MvcHtmlString ActionLinkWithImage(this HtmlHelper html, string imgSrc, string actionName,string controllerName,object routeValue=null)
        {
            var urlHelper = new UrlHelper(html.ViewContext.RequestContext); 

            string imgUrl = urlHelper.Content(imgSrc);
            TagBuilder imgTagBuilder = new TagBuilder("img");
            imgTagBuilder.MergeAttribute("src", imgUrl);
            string img = imgTagBuilder.ToString(TagRenderMode.SelfClosing); 

            string url = urlHelper.Action(actionName, controllerName, routeValue); 

            TagBuilder tagBuilder = new TagBuilder("a")
            {
                InnerHtml = img
            };
            tagBuilder.MergeAttribute("href", url); 

            return new MvcHtmlString(tagBuilder.ToString(TagRenderMode.Normal));
        }
    }
}

二、在view下使用:

@Html.ActionLinkWithImage(Url.Content("~/Content/images/index_1.gif"), "Index")

@Html.ActionLinkWithImage(Url.Content("~/Content/images/index_2.gif"), "List","Admin", new { id=1})

MVC的带链接的图片标签就完成了,可以传入跳转到制定的控制器、方法、以及传入参数等。

时间: 2024-11-06 14:43:13

MVC 自定义标签,给Html.ActionLink加上支持图片链接的功能的相关文章

Spring MVC 自定义标签如何使用@Autowired自动装配注解

在用Spring MVC框架做Web应用开发中,在一些特殊请款下我们都会用自定标签来完成一些特殊的功能. 在通常情况下,自定义标签的内容如果不通过访问服务就能实现,那么继承TagSupport,重写doStartTag()方法就可以实现基本功能. eg. 实现一个html标记的反转义功能的自定义标签 /** * @Comment * @Author Ron * @date 2016年8月30日 上午9:02:56 */ public class HtmlUnEncodeTags extends

Java之自定义标签一

在JSP页面中,通常为了处理某些业务逻辑需要编写大量的Java代码,在一定程度上使得页面变得更加的复杂,并且不直观,也不利于前端人员对jsp页面的修改,通过自定义标签可以实现负责的.可重复利用的功能,并且简化了jsp页面,方便了后期的维护和修改. 一.实现自定义标签的步骤 1.首先编写自定义标签处理类:继承或实现相应的接口 2.编写标签描述文件:存放到网站的web-info目录中 3.在页面中引入标签文件 二.自定义标签实现类和接口的描述 JspTag:标记接口,实现了该接口的类可以处理标签 T

web day13 JSTL标签库(c标签,自定义标签),MVC设计模式,JavaWeb经典三层框架

JSTL 1. jstl的概述 *apache的东西,依赖EL * 使用jstl需要导入jstl1.2.jar * 四大库: > core:核心库,重点 > fmt:格式化:日期.数字 > sql:过时 > xml:过时 2. 导入标签库 *jar包 * 在jsp页面中:<%@taglib prefix="前缀" uri="路径"%> ---------------------- core --> c标签! 1. out和s

10JSP自定义标签

1标签(Tag): 标签是一种XML元素,通过标签可以使JSP网页变得简洁并且易于维护,还可以方便地实现同一个JSP文件支持多种语言版本.由于标签是XML元素,所以它的名称和属性都是大小写敏感. 标签库(Tag library): 由一系列功能相似.逻辑上互相联系的标签构成的集合称为标签库. 标签库描述文件(Tag Library Descriptor): 标签库描述文件是一个XML文件,这个文件提供了标签库中类和JSP中对标签引用的映射关系.它是一个配置文件,和web.xml是类似的. 标签处

javaweb回顾第八篇如何创建自定义标签

前言:在javaweb开发中自定义标签的用处还是挺多的.今天和大家一起看自定义标签是如何实现的. 1:什么是标签 标签是一种XML元素,通过标签可以使JSP页面变得简介易用,而且标签具有很好的复用性. 2:自定义标签的标签库主要的接口以及类的继承实现关系图 3:一步步实现自定义标签 3.1:Tag接口 我们先看一个标签<td></td>这个标签有开始标签和结束标签,而且还有<tr>这样的父标签,那么实现一个简单的标签需要什么呢 第一:开始标签  第二:结束标签第三:资源

JSP2 自定义标签

实现步骤 实现自定义标签的处理类继承javax.servlet.jsp.tagext.SimpleTagSupport,并重写doTag方法 建立标签库配置文件 在jsp中使用自定义标签 一个简单的标签 文件目录结构 src/main/java |---- cn.ljl.javaweb.demo.jsp2taglib.servlet |---- HelloWorldServlet.java |---- cn.ljl.javaweb.demo.jsp2taglib |---- HelloWordT

jsp的自定义标签

1.相对于JSTL或Spring等第三方标签库而言的,用来实现项目中特定的功能需求. 2.自定义标签基本的组成部分 ①页面上看得见的部分 [1]通过taglib引入标签库 [2]标签本身 ②xxx.tld文件:用来注册标签处理器类 ③标签处理器类 3.创建一个没有属性没有标签体的自定义标签 ①创建自定义标签的处理器类 [1]标准要求:实现接口javax.servlet.jsp.tagext.SimpleTag [2]实际操作:继承javax.servlet.jsp.tagext.SimpleTa

Java编写自定义标签

在开发项目过程中,我们经常有这样的体会:同一个控件我们可能多处使用,同时我们需要在基础的样式上加上自己的样式和操作的js代码:遇到这种情况,如果每个地方都copy代码的话那么,后期如果要做修改,那么维护的工作量是巨大的,无疑是个灾难.基于这种情况,我们可以考虑使用自定义标签,实现代码的复用,后期的易维护. 先看一张关系图: 上图是我们开发自定义标签常用的接口,我们使用最快捷简便的方式,继承TagSupport类,只需重写doStartTag和doEndtag方法. 制作步骤: 一.编写java文

JSP自定义标签开发

一般情况下开发jsp自定义标签需要引用以下两个包 import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; 首先我们需要大致了解开发自定义标签所涉及到的接口与类的层次结构(其中SimpleTag接口与SimpleTagSupport类是JSP2.0中新引入的). 一, 自定义标签  :实现了特定接口的java类,封装了java代码编写的预定义行为.  * 在运行时,标签被替换成相应的预定义java代码. * JSP 自定义标记提