1.为什么要使用HtmlHelper?

1.首先HtmlHelper是一个类型,MVC中的ViewPage<TModel>中的一个属性Html属性,这个属性的类型就是HtmlHelper<TModel>类型的,这样封装后最后产生的代码和我们手写的html代码是完全一样的,没有任何冗余,同时可以使得我们直接“点“出来想要的标签,方便开发。

2.可是只是可以“点”出来这点优势,好像没有什么说服力,因为这些HtmlHelper代码需要后台处理后才能转换成html代码,多走了一个流程,还有另一个优势就是HtmlHelper生成的html代码他是根据路由规则去匹配的,也就是以后你修改了路由规则也是不影响的,实现了路由规则和前端界面的解耦(比如超链接标签),

3.使用HtmlHelper可以实现更加强大自动绑定。可以直接和ViewData["username"]="123"进行绑定,当然前提是前端的名字和ViewData的名字一样

2.HtmlHelper的使用

(1)超链接

  <%:Html.ActionLink("链接到Index","Index","Home",new{name="ww", age="ss"},new{ id="1",@class="cls"}) %>

对于上面的@class这个是讲class进行转义,因为在C#中class是一个关键字,对于ActionLink中有很多的重载,可以设置属性,确定控制器和行为

等效

<a calss="cls" href=“/Home/Indx/1?name=ww&age=ss”>链接到Index</a>

 (2)下拉列表

 <% List<SelectListItem> list = new List<SelectListItem>();
list.AddRange (new SelectListItem []{ new SelectListItem() { Text="大学",Value ="0",Selected =false },
new SelectListItem (){ Selected=true,Text ="高中",Value ="1"}
}); ViewData["drop"] = list;
%>> <%:Html .DropDownList("drop",null ,new{id ="33"}) %>

上面可以发现已经实现与ViewData的自动绑定,否则使用手写的话没法实现,Form标签也只是使用强类型页面实现绑定

(3)单选按钮

  <%:Html.RadioButton("sex",0) %>男 <%:Html.RadioButton("sex",1) %>女

(4)form表单

        <%using(Html.BeginForm("Index","Home",FormMethod.Post,new{id="form1", enctype=""})){ %>
<input type ="submit" value ="提交">
<%} %>

因为BeginForm方法返回类型继承自IDispose,所以使用using。

(5)关于For系列

对于每一个Html中的标签都有两个方法,一个带有for,一个不带for,上面展示的都是没有for的展示

对于for系列,可以使用Lambda表达式,这种方法经常和强类型页面一起使用

Html.TextBoxFor(userInfo=>UserInfo.UserName,new{id ="ss"})

3.关于ASPX引擎中的输出,可以使用“=”,也可以使用“:”

这两种方式都是可以实现打印出来的效果,“=”当字符串中含有html代码的时候,可以将html代码翻译出来,但是这种方式存在安全危机,也就是容易引发页面安全错误提示

“:”是将字符串中的html代码原阳输出,也就是实现了EnCode操作,增加安全性,防止跨脚本攻击,但是倘若想要打印出翻译后的结果如何处理呢?,此时可以模仿一下微软的处理,因为微软中的HtmlHelper中就是将html翻译出来的,也就是MvcHtmlString类

<%:MvcHtmlHelper.Create(ViewData["ss"].ToString())%>

这样就OK了,所以综上所述,建议使用“:”输出,而不是使用“=”。

MVC学习之HtmlHelper的更多相关文章

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

    微软自带很多HtmlHelper: ActionLink - 链接到操作方法.BeginForm  - 标记窗体的开头并链接到呈现该窗体的操作方法.CheckBox  - 呈现复选框.DropDown ...

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

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

  3. MVC学习(四)几种分页的实现(3)

    在这篇MVC学习(四)几种分页的实现(2)博文中,根据URL中传入的两个参数(页码数,首页.上一页.下一页.末页的标记符)来获得对应的分页数据, 只是传入的参数太多,调用起来不太方便(标记符不能够写错 ...

  4. ASP.NET MVC学习之视图篇(2)

    继ASP.NET MVC学习之视图(1)学习 4.HTML辅助器 虽然在ASP.NET MVC中我们已经摆脱了ASP.NET的控件,但是对于页面中需要循环标签的情况依然还是存在,可能很多人认为用for ...

  5. (asp.net MVC学习)System.Web.Mvc.UrlHelper的学习与使用

    上一次学习了HtmlHelper帮助类,这次我们学习一下UrlHelper帮 助类,看类名也都知道这个类是用来帮我们生成URL在ASP.NET MVC应用程序中.让我们来看看该类给我们带来了哪些方便的 ...

  6. ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现

    ASP.NET MVC 学习笔记-2.Razor语法   1.         表达式 表达式必须跟在“@”符号之后, 2.         代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...

  7. Spring MVC 学习 -- 创建过程

    Spring MVC 学习 -- 创建过程 Spring MVC我们使用的时候会在web.xml中配置 <servlet> <servlet-name>SpringMVC< ...

  8. 前端MVC学习总结——AngularJS验证、过滤器

    前端MVC学习总结--AngularJS验证.过滤器 目录 一.验证 二.过滤器 2.1.内置过滤器 2.1.1.在模板中使用过滤器 2.1.2.在脚本中调用过滤函数 2.2.自定义过滤器 三.指令( ...

  9. 《Spring MVC学习指南》怎么样?答:书名具有很大的欺骗性

    2016年6月21日 最近,因为工作需要,我从网上买了一本<Spring MVC学习指南>,ISBN编号: 978-7-115-38639-7,定价:49.00元.此书是[美]Paul D ...

随机推荐

  1. ffplay的音视频同步分析

    以前工作中参与了一些音视频程序的开发,不过使用的都是芯片公司的SDK,没有研究到更深入一层,比如说音视频同步是怎么回事.只好自己抽点时间出来分析开源代码了,做音视频编解码的人都知道ffmpeg,他在各 ...

  2. (转)SCR, PCR, ESCR, PTS, DTS

    1.       SCR SCR是存在于PS中的,即PS的pack里面的一个field.他用来指定这个PS的pack期望的到达decoder的时间. 2.       ESCR ESCR是位于PES里 ...

  3. erlang随机数问题

    一.计算机的随机数的老问题,伪随机数. random:seed() random:uniform(N) 如果seed是相同的,则第M次执行 random:uniform(N) .M.N相同,则得到的随 ...

  4. 二分求幂,快速求解a的b次幂

    一个引子 如何求得a的b次幂呢,那还不简单,一个for循环就可以实现! void main(void) { int a, b; ; cin >> a >> b; ; i < ...

  5. 演示--Jquery核心选择器

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. informatica中的workflow连接远程数据库

    如果是远程oracle这样写 名称随便起,方便自己记住,后面用户名密码你都知道,再加上数据库的地址:端口/SID就可以了. 如10.33.2.208:1521/torcl

  7. rsync文件同步、Inotify-tools参数详解

    inotifywait用于等待文件或文件集上的一个待定事件,可以监控任何文件和目录设置,并且可以递归地监控整个目录树: inotifywatch用于收集被监控的文件系统计数据,包括每个inotify事 ...

  8. 解决RaycastTarget勾选过多的烦恼

    看过UGUI源码的朋友一定都知道,UI事件会在EventSystem在Update的Process触发.UGUI会遍历屏幕中所有RaycastTarget是true的UI,接着就会发射线,并且排序找到 ...

  9. thinkjs之页面跳转-同步异步

    对于刚入手thinkjs项目的新手来说,时常会犯的一个错误就是“混用”各种代码逻辑,比如:我们经常在做后台管理系统的时候用到的登录框, , 其实它原本是有一个路由专门存放自己的代码逻辑,而在点击提交按 ...

  10. Android 使用DatePicker以及TimePicker显示当前日期和时间

    课程内容1.介绍DatePicker和TimePicker两种实现动态输入日期和事件的功能2.介绍DatePickerDialog和TimePickerDialog来年耕种实现动态输入日期和事件的对话 ...