MVC学习之HtmlHelper

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了,所以综上所述,建议使用“:”输出,而不是使用“=”。

时间: 2024-10-13 15:52:14

MVC学习之HtmlHelper的相关文章

(asp.net MVC学习)System.Web.Mvc.HtmlHelper学习及使用

在ASP.NET MVC框架中没有了自己的控件,页面显示完全就回到了写html代码的年代.还好在asp.net mvc框架中也有自带的HtmlHelper和UrlHelper两个帮助类.另外在MvcContrib扩展项目中也有扩展一些帮助类,这样我们就不光 只能使用完整的html来编写了需要显示的页面了,就可以使用这些帮助类来完成,但最后运行时都还是要生成html代码的. 先来看看HtmlHelper能帮我们生成一些什么样的html呢.直接看效果吧. <div>          1.使用Ht

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

继ASP.NET MVC学习之视图(1)学习 4.HTML辅助器 虽然在ASP.NET MVC中我们已经摆脱了ASP.NET的控件,但是对于页面中需要循环标签的情况依然还是存在,可能很多人认为用foreach就可以完成,但是这个仅仅只是针对单个循环,如果多个循环中都要使用到同样的标签呢?下面笔者就介绍两种方式让我们事半功倍. 首先是针对单个页面的内联辅助器,如果我们遇到只要在单个页面中不断使用的标签的时候,这个方式非常的轻便,比如下面的代码根据文本内容和样式类生成li标签的辅助器(Views/H

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

上一次学习了HtmlHelper帮助类,这次我们学习一下UrlHelper帮 助类,看类名也都知道这个类是用来帮我们生成URL在ASP.NET MVC应用程序中.让我们来看看该类给我们带来了哪些方便的方法和属性,UrlHelper提供了四个非常常用的四个方法, 1.Action方法通过提供Controller,Action和各种参数生成一个URL, 2.Content方法是将一个虚拟的,相对的路径转换到应用程序的绝对路径, 3.Encode方法是对URL地址进行加密,与Server.Encode

ASP.NET MVC学习---(五)MVC初体验

经过之前n多的铺垫 我们已经大概了解了这个姓m名vc的家伙了 那么今天我们就来体验一把 怎么体验呢? 就来做一个小例子吧~ mvc增删改查的例子 数据库还是之前我们的老朋友 关系图: 表中的数据已填好 T_Users 将就着用着吧,哈哈 现在要求对T_Users表进行增删改查 开搞~ 回到之前新建的mvc项目 在Controllers文件夹下新建一个名为Home的空控制器 当浏览器请求Home下面的Index方法的时候返回什么? 当然是主页面啦 这里我们的主页面就是显示T_Users数据列表 代

asp.net mvc 学习备忘

参考书 pro asp.net mvc5 ,http://asp.net/mvc asp.net mvc是传统asp.net窗体程序的一种替代,web form 有很多被人诟病的地方.mvc不是asp.net独有的.微软模仿了Rails . m model 模型 v view 视图 c control 控制器 控制器里的每个方法称为action,每个action对应一个view, view不是一个完整的页面,而是部分页面.导航,底部等共同的部分,放在layout文件中. m 用来建立模型.呈现数

Spring MVC 学习笔记(二):@RequestMapping用法详解

一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置 <servlet>     <servlet-name>servletName</servlet-name>     <servlet-class>ServletClass</servlet-class> </servlet>

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

继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax({type:"get"}) 来实现: 请求的后台Action方法仍为上篇文章中的GetU

MVC学习笔记索引帖

[MVC学习笔记]1.项目结构搭建及单个类在各个层次中的实现 [MVC学习笔记]2.使用T4模板生成其他类的具体实现 [MVC学习笔记]3.使用Spring.Net应用IOC(依赖倒置) [MVC学习笔记]4.使用Log4Net来进行错误日志的记录 [MVC学习笔记]5.使用Controller来代替Filter完成登录验证(Session校验) [MVC学习笔记]6. 使用Memcache+Cookie解决分布式系统共享登录状态 [MVC学习笔记]7.使用极验验证来制作更高逼格的验证码

ASP.NET MVC学习之控制器篇

一.前言 许久之后终于可以继续我的ASP.NET MVC连载了,之前我们全面的讲述了路由相关的知识,下面我们将开始控制器和动作的讲解. ASP.NET MVC学习之路由篇幅(1) ASP.NET MVC学习之路由篇幅(2) ASP.NET MVC学习之路由篇幅(3) 二.正文 1.IController的使用 这个接口可能很多人都没有使用过,但是我们常用的Controller类实现了这个接口,而且只要实现这个接口就可以作为一个控制器,当然很多的内部的处理就要我们自己去做了. 下面我利用ICont