微软自带很多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. 为Asp.Net Web Api添加Http基本认证

    Asp.net Web Api提供了RESTFul web服务的编程接口.默认RESTFul 服务没有提供任何验证或者基于角色的验证,这显然不适合Put.Post.Delete这些操作.Aps.net ...

  2. hdu-5586 Sum(dp)

    题目链接: Sum Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others) Probl ...

  3. SQL Sever 2012 如何建立数据库连接

    SQL Sever 2012 如何建立数据库连接 一.下载 http://www.microsoft.com/zh-cn/download/details.aspx?id=29062 下载后直接安装即 ...

  4. C++之时间统计

    1.最精确 QueryPerformanceFrequency(&nFreq); cout <<nFreq.QuadPart<<endl;//获得计数频率 QueryP ...

  5. 关于IIS中WEB网站访问弹“验证输入框”及“401限制访问”的解决办法

    最近在配置IIS网站的过程中,不管是本地还是外部访问配置的网站,出现了需要输入用户名.密码.及域的对话框,解决之后又出现页面401限制访问的错误页面. 就这两项错误,依次做一下解决办法的整理. 解决流 ...

  6. 解决IE6下固定定位问题 使用position:fixed

    IE6浏览器有太多的bug让制作网页的人头疼.这篇文章介绍的是介绍的是如何解决IE6不支持position:fixed;属性的办法. 如果我们需要做某个元素始终位于浏览器的底部,不会因为浏览器窗口的缩 ...

  7. 字符集转换: Unicode - Ansi

    字符集转换: Unicode - Ansi string UnicodeToAnsi ( const wstring& wstrSrc ) { /*!< 分配目标空间, 一个16位Uni ...

  8. 13.mariadb-rhce考试解题思路

    1.安装mariadb ①yum install -y mariadb mariadb-server 或者 yum groupinstall -y mariadb 2.备份和还原数据库 ①备份:mys ...

  9. 常用HTML meta 标签属性(网站兼容与优化需要),meta标签

    常用HTML meta 标签属性(网站兼容与优化需要),meta标签 标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的.它可用于浏览器(如何显示内容或重新加载页面),搜索 ...

  10. emmet(Zen coding)帮助文档

    葵花宝典终可成,半途而废万事空. 官方地址:http://docs.emmet.io/cheat-sheet/ 我导出了pdf版,需要的同学可以下载: 链接:http://pan.baidu.com/ ...