zoukankan      html  css  js  c++  java
  • Html辅助方法

    html helper就是用来辅助产生的HTML之用,在开发view的时候会面对许多html标签,处理这些会显得繁琐,为了降低view的复杂度,可以使用html辅助方法帮助产生一些html标签或内容,因这些html标签都有固定标准的写法,所以将其包装成html辅助方法,可让view开发更快速,也可以避免不必要的语法错误。

     
    1,输出超链接
    @Html.ActionLink("aaa","ActionName")
    预设会链接到ActionName这个名称的action,由于没有指定控制器名称,因此指向的控制器将会与这次检视页面所属的控制器一样。
     
    @Html.ActionLink("aaa","ActionName",“ControllerName”)
    链接到指定控制器下的action
     
    @Html.ActionLink("aaa","ActionName",new {id=123,page=5})
    设定额外的RouteValue,可以在第三个参数传入object型别的数据
     
    @Html.ActionLink("aaa","ActionName",null,new {@class="btnLink"})
    当需要传入超链接额外的HTML属性时,可以将参数加在第四个参数上
    注意:由于html标签里在套用css样式类别时会用到class属性名称,不过,在c#里class属于关键字并无法使用为匿名物件的属性,因此若要将其看为属性,则要在前面添加@跳转符号,这样才会正确编译。
    此外,如果输出的html属性包含减号,如data-value属性,设定c#属性名称时必须将减号改成下划线替代,最后输出html属性时会自动变成减号。
     
    使用Html.ActionLink()时,第一个参数为超链接的显示文字,此参数不可以输入空字符串,空白字符串或者null值,否则就会抛出TheValue cannot be null or empty.的例外。
     
    但是如果我们要设定完全没有链接内容的时候,一般会是用在输出图片为主的超链接上,因为设计师想设计一个包含超链接的图片按钮,因此图片选择用a标签来输出,并通过css加上一个背景图
    比如这种<标签a href="/home/index" class="lnkButton"></标签a>这样的格式输出是没法利用Html.ActionLink来做的,必须该用@Url.Action辅助方法才行
    比如<标签a href="@Url.Action("ActionName")" class="lnkButton"></标签a>
     
    @Html.RouteLink("回会员专区",new {type="default"})
    @Html.RouteLink("回会员专区",new {type="default"},new {@class="back"})
    输出结果如下
    <标签a href="/Account/Login?type=default" class="lnkButton">回会员专区</标签a>
    <标签a  class="back"  href="/Account/Login?type=default" class="lnkButton">回会员专区</标签a>
    还可以指定路由表RouteTable中的路由名称,然后再加上额外的RouteValue参数
    @Html.RouteLink("回会员专区",“Member”,new {})
    @Html.RouteLink("回会员专区",“Member”,new {type="default"})
    @Html.RouteLink("回会员专区",“Member”,new {type="default"},new {@class="back"})
     
    2,输出表单
     
    》》》》产生表单元素
    eg:
    @using(Html.BeginForm()){
     
    <标签p>账号:@Html.TextBox("account")</标签p>
    <标签p>密码:@Html.Password("password")</标签p>
    }
     
    输出的内容回是
    <表单form action="/account/Login" method="post">
    <标签p>账号:<标签input id="account" name ="account" type="text" value=""   /></标签p>
    <标签p>密码:<标签input id="password" name ="password" type="password" value=""   /></标签p>
    </表单form>
     
    注意:当然我们也可以不适用@using,这样是可以确保表单标签会在using结尾输出表单结束标签,当然也可以在末尾使用@Html.EndForm()来关闭这个标签。但是beginform没法直接通过@输出,必须以c#语句的方式来执行。
    eg:
    @{Html.BeginForm("Abount","Home");}
    @Html.TextArea("Date")
    @Html.TextArea("MeMO")
    <标签input type="submit"/>
    @{Html.EndForm();}
     
    @Html.BeginForm()预设输出的method是post,如果要设定get可以输入第三个参数
     
    @using(Html.BeginForm(”Search","Home",FormMethod.Get)){
    <标签p>账号:@Html.TextBox("account")</标签p>
    }
     
    如果要在表单上做上传功能,就必须在表单标签加一个enctype属性,且内容必须设定为multipe/form-data
    ,要通过Html.BeginForm辅助来新增额外的属性必须加上第四个参数,并传入一个匿名物件。
    eg:
    @using(Html.BeginForm("Upload","File",FormMethod.Post, new {enctype="multipart/form-data"})){
    @Html.TextBox("File1","",new {type="file",size="25"})
    <标签input type="submit"/>
    }
    输出内容是
    <表单form action="/File/Upload" enctype="multipart/form-data" method="post">
    <标签input type="file" id="File1"  name="File1" size="25" value=""/>
    <标签input type="submit"/>
    </表单form>
     
    注意:html辅助方法并没有File方法,因此必须用TextBox来代替,并传入第三个参数将内建的type属性换成file即可。
    拓展:如果要将表单送出的目标网址限定在特定的路由规则,可以用html.BeginRouteForm辅助方法指定路由名称eg:
    @using("Inquiry",new {action="Index"}){}
     
    》》》》》》模拟各种http动词(暂时没用到,以后再补充)
     
    》》》》》》常用表单输入栏位
    @Html.Password()用于产生密码栏位,
    @Html.Hidden()用于产生隐藏栏位,
    @Html.TextArea()用于产生多行文字的输入框,使用方式与html.textbox类似,但拥有较多的多载可以指定rows和column的值
    @Html.DropDownList()用于产生下拉框
    eg:@Html。DropDownList("List",ViewData["List"]as SelectList,"请选择")
     
    @Html.listBox()用于产生多选的下拉式菜单,和上面的用法相似。
    @Html.RadioButton()用于产生单选按钮(name,value,true[false])
    @Html.CheckBox()用
  • 相关阅读:
    数字签名与HTTPS详解
    利用策略模式优化过多 if else 代码
    Redis 的事务到底是不是原子性的
    Spring Boot项目的接口防刷
    深入分析 ThreadLocal
    什么是四层和七层负载均衡?他们之间的区别是什么?
    MyEclipse或Eclipse中project的导入和导出
    org.hibernate.exception.ConstraintViolationException: could not insert:
    C++ STL vector(向量容器)的使用(附完整程序代码)
    Swift2.0语言教程之函数嵌套调用形式
  • 原文地址:https://www.cnblogs.com/jinhaoObject/p/4597594.html
Copyright © 2011-2022 走看看