微软自带很多HtmlHelper:

ActionLink - 链接到操作方法。
BeginForm  - 标记窗体的开头并链接到呈现该窗体的操作方法。
CheckBox  - 呈现复选框。
DropDownList  - 呈现下拉列表。
Hidden - 在窗体中嵌入未呈现的信息以供用户查看。
ListBox  - 呈现列表框。
Password - 呈现用于输入密码的文本框。
RadioButton  - 呈现单选按钮。
TextArea - 呈现文本区域(多行文本框)。
TextBox  - 呈现文本框

当这些不能满足我们项目要求时,我们可以自定义HtmlHelper。

新建HtmlHelperExtensions类

  public static class HtmlHelperExtensions
{
public static ListGroup ListGroup(this HtmlHelper htmlHelper)
{
return new ListGroup();
}
} public class ListGroup
{
public MvcHtmlString Info<T>(List<T> data, Func<T, string> getName)
{
return Show(data, getName, "list-group-item-info");
} public MvcHtmlString Warning<T>(List<T> data, Func<T, string> getName)
{
return Show(data, getName, "list-group-item-warning");
} public MvcHtmlString Danger<T>(List<T> data, Func<T, string> getName)
{
return Show(data, getName, "list-group-item-danger");
} private MvcHtmlString Show<T>(List<T> data, Func<T, string> getName, string style)
{
TagBuilder ul = new TagBuilder("ul");
ul.AddCssClass("list-group"); foreach (var item in data)
{
TagBuilder li = new TagBuilder("li");
li.AddCssClass("list-group-item");
li.AddCssClass(style);
li.SetInnerText(getName(item));
ul.InnerHtml += li.ToString();
}
return new MvcHtmlString(ul.ToString());
}
}

项目中调用HomeController的ShowList:

public ActionResult ShowList()
{
StudentViewModel s1 = new StudentViewModel();
s1.ID = "";
s1.Name = "zhangsan1";
s1.Gender = "man1"; StudentViewModel s2 = new StudentViewModel();
s2.ID = "";
s2.Name = "zhangsan2";
s2.Gender = "man2"; StudentViewModel s3 = new StudentViewModel();
s3.ID = "";
s3.Name = "zhangsan3";
s3.Gender = "man3"; List<StudentViewModel> lists = new List<StudentViewModel>();
lists.Add(s1);
lists.Add(s2);
lists.Add(s3); return View(lists);
}

View:

@using WebApplication13.Extensions
@using WebApplication13.Models
@model List<StudentViewModel> <div class="row">
<div class="col-md-6">@Html.ListGroup().Info(Model,x=>x.Name)</div>
</div> <div class="row">
<div class="col-md-6">@Html.ListGroup().Warning(Model, x => x.Name)</div>
</div> <div class="row">
<div class="col-md-6">@Html.ListGroup().Danger(Model, x => x.Name)</div>
</div> <style type="text/css">
.list-group-item-info {
background-color:aqua;
} .list-group-item-warning {
background-color:yellow;
} .list-group-item-danger {
background-color:red;
}
</style>

项目效果图:

MVC学习系列——HtmlHelper扩展的更多相关文章

  1. MVC学习系列——ModelBinder扩展

    在MVC系统中,我们接受数据,运用的是ModelBinder 的技术. MVC学习系列——ActionResult扩展在这个系列中,我们自定义了XmlResult的返回结果. 那么是不是意味着能POS ...

  2. MVC学习系列——Filter扩展

    在MVC中,Filter也是可以扩展的.在此,本人对Filter的理解就是AOP,不知道各位大侠,有什么高的见解,呵呵... 首先MVC四大过滤神器IAuthorizationFilter,IActi ...

  3. MVC学习系列——ActionResult扩展

    首先,MVC扩展性非常强. 我从ActionResult扩展入手,因为我们知道微软ActionResult和其子类,有时候并不能满足所有返回值. 比如:我需要返回XML. 因此,现在我扩展XMLRes ...

  4. MVC学习系列——RazorViewEngine扩展

    有时候,我们的项目涉及到多种风格,我们可以通过扩展RazorViewEngine,这样就可以保持后台代码不发生变化. 新建类ThemeViewEngine继承于RazorViewEngine publ ...

  5. MVC学习系列4--@helper辅助方法和用户自定义HTML方法

    在HTML Helper,帮助类的帮助下,我们可以动态的创建HTML控件.HTML帮助类是在视图中,用来呈现HTML内容的.HTML帮助类是一个方法,它返回的是string类型的值. HTML帮助类, ...

  6. ASP.NET MVC学习系列(二)-WebAPI请求

    继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...

  7. ASP.NET MVC学习系列(二)-WebAPI请求(转)

    转自:http://www.cnblogs.com/babycool/p/3922738.html 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的g ...

  8. MVC学习系列——记一次失败面试后,感想。

    在此写博客之际,热烈庆祝母校苏州科技学院,正式改名为苏州科技大学. 一晃眼,从自己投身IT行业已经两年有余,期间经历了结婚.买房等人生大事,非常感谢我的老婆,谢谢她这么爱我,嫁给我这个码农,呵呵... ...

  9. [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参

    [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...

随机推荐

  1. jQuery选择器之属性选择器Demo

    测试代码: 06-属性选择器.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...

  2. 【转】 关于data factory的介绍——即如何快速生成大批量数据

    上次在我的博客中讲述了quest公司的spotlight系列软件,这次来扯淡一下quest公司的另一测试辅助软件 datafactory(数据工厂),顾名思义,数据工厂是生产数据的,主要应用领域是性能 ...

  3. 关于CSS的只言片语

    这段时间做了一个简单的页面,借机又重温了一下CSS的相关知识,现总结一下: 工欲善其事必先利其器,让我们先做一点准备工作 1.在页面添加: <meta http-equiv="x-ua ...

  4. AJAX一些基本知识点

    ajax的定义: 中文意思:异步JavaScript和XML. 指一种创建交互式网页应用的网页开发技术. ajax的核心是XMLHttpRequest,在页面中由XMLHTTPRequest来发出Ht ...

  5. VpnService

    这段时间项目中使用到了VpnService,整理了一下官方文档的资料 VpnService is a base class for applications to extend and build t ...

  6. iOS - 移动设备防丢失App

    一.原理 二.数据获取 三.报警

  7. 【转载】#303 - Accessibility of Class Members

    Members of a class can have different kinds of accessibility. An accessibility keyword indicates wha ...

  8. Java中浮点数能连续精确表示整数的范围

    转自http://blog.csdn.net/seizef/article/details/5571783#ref_1,有删改. 先简单介绍一下浮点数在计算机中的组成,在Java中采用的浮点数表示法是 ...

  9. NOIP 2015普及组复赛Day1 T1 == Codevs4510 神奇的幻方

    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold  题目描述 Description: 幻方是一种很神奇的N∗N矩阵:它由数字 1,2,3, … … ,N∗N构成, ...

  10. iOS网络加载图片缓存策略之ASIDownloadCache缓存优化

    iOS网络加载图片缓存策略之ASIDownloadCache缓存优化   在我们实际工程中,很多情况需要从网络上加载图片,然后将图片在imageview中显示出来,但每次都要从网络上请求,会严重影响用 ...