MVC学习系列——HtmlHelper扩展
微软自带很多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扩展的更多相关文章
- MVC学习系列——ModelBinder扩展
在MVC系统中,我们接受数据,运用的是ModelBinder 的技术. MVC学习系列——ActionResult扩展在这个系列中,我们自定义了XmlResult的返回结果. 那么是不是意味着能POS ...
- MVC学习系列——Filter扩展
在MVC中,Filter也是可以扩展的.在此,本人对Filter的理解就是AOP,不知道各位大侠,有什么高的见解,呵呵... 首先MVC四大过滤神器IAuthorizationFilter,IActi ...
- MVC学习系列——ActionResult扩展
首先,MVC扩展性非常强. 我从ActionResult扩展入手,因为我们知道微软ActionResult和其子类,有时候并不能满足所有返回值. 比如:我需要返回XML. 因此,现在我扩展XMLRes ...
- MVC学习系列——RazorViewEngine扩展
有时候,我们的项目涉及到多种风格,我们可以通过扩展RazorViewEngine,这样就可以保持后台代码不发生变化. 新建类ThemeViewEngine继承于RazorViewEngine publ ...
- MVC学习系列4--@helper辅助方法和用户自定义HTML方法
在HTML Helper,帮助类的帮助下,我们可以动态的创建HTML控件.HTML帮助类是在视图中,用来呈现HTML内容的.HTML帮助类是一个方法,它返回的是string类型的值. HTML帮助类, ...
- ASP.NET MVC学习系列(二)-WebAPI请求
继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...
- ASP.NET MVC学习系列(二)-WebAPI请求(转)
转自:http://www.cnblogs.com/babycool/p/3922738.html 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的g ...
- MVC学习系列——记一次失败面试后,感想。
在此写博客之际,热烈庆祝母校苏州科技学院,正式改名为苏州科技大学. 一晃眼,从自己投身IT行业已经两年有余,期间经历了结婚.买房等人生大事,非常感谢我的老婆,谢谢她这么爱我,嫁给我这个码农,呵呵... ...
- [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参
[转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...
随机推荐
- JDBC批处理读取指定Excel中数据到Mysql关系型数据库
这个demo是有一个Excel中的数据,我需要读取其中的数据然后导入到关系型数据库中,但是为了向数据库中插入更多的数据,循环N次Excel中的结果. 关于JDBC的批处理还可以参考我总结的如下博文: ...
- java的技术调用栈图示例
- 主机、虚拟机、开发板(u-boot)之间的连接 - ping测试
1.设置主机的IP地址(这里注意,设置一定要设置网线宽带IP,不要选成无线网络的) 查看重点是否本地以太网卡(Realtek PCIe……) 2.修改本地连接3个IP地址,一定主机.虚拟机.开发板 三 ...
- js标签放在html的什么位置比较好
推荐的是js的script标签放在body的末尾,</body>标签之前,包含在body内! <body> <!--其它Html标签--> <script&g ...
- Java之阶乘数的计算
说起“阶乘数”,我们应该都不会感到陌生.当老师布置了这样的作业,我们大多数人是一贯用笔算,还有的同学会用计算机去计算.数学是讲究原理和方法的,我们知其然,也要知其所以然.下面我们就用编程来计算阶乘数. ...
- Android之开源项目工具库篇
本文转自:http://www.trinea.cn/android/android-open-source-projects-dev-lib/ 本文中你可以找到那些精美App中各种有特性的View,如 ...
- Zend studio 12.5.1安装aptana
aptana是zend studio的一个插件.解决zend对于前台html支持,加亮的问题. 安装方法其实很简单 ,直接给出aptana的地址了. http://download.aptana.co ...
- Different ways to invoke a shared object/share library(.so)
在Linux中调用.so文件的方法有几种. 1.直接在编译的时候链接上. 2.dlopen/???
- 使用zookeeper实现分布式master选举(c 接口版本)
zookeeper,已经被很多人所熟知,主要应用场景有(数据订阅/发布 ,负载均衡, 命名服务, 分布式协调/通知,集群管理,Master选举,分布式锁,分布式队列). C接口的描述 主要参考 Ha ...
- 向CodeBlocks的Project中添加calss文件时,出现No such file or directory错误的解决方案
我们在CodeBlocks中编写程序时,一般要建立工程.现在建立工程first,然后建立类文件Person,并将其添加到first中, int main() { Person p; p.display ...