Razor学习(二)@Html标签

原文链接:http://blog.csdn.net/pasic/article/details/7093802

只是因为原文作者说的东西,还有很多作为基础知识的东西,我都没有掌握,所以总结在这里,蓝字是我加的。

@Html帮助器简单说明,记录些基本的跟HTML中对应的@html帮助器,@Html基本包含了html中的表单控件和常用Html
在@Html中,带有For的主要是针对强类型的Html类型。
用于说明@Html中标签,定义Student对象用于辅助说明,

public class Student
{
  /// <summary>
        /// 姓名
        /// </summary>
        ///
        [DisplayName("姓名")]
        public string Name
        {
            get;
            set;
        }

        /// <summary>
        /// 年龄
        /// </summary>
        public int Age
        {
            get;
            set;
        }
}

在cshtml页面定义@model Student
Label标签,在LabelExtensions类中实现

1、 @Html.Label()

返回一个 HTML label 元素和由指定表达式表示的属性的属性名称。

参数:string expression,string labelText

expression:一个表达式表示要显示的属性

labelText:显示文字

例:

@Html.Label("weight")             输出:<label for="weight">weight</label>
@Html.Label("name","姓名")        输出:<label for="name">姓名</label>

什么是lable for标签???

定义和用法

for 属性规定 label 与哪个表单元素绑定。

隐式和显式的联系

标记通常以下面两种方式中的一种来和表单控件相联系:将表单控件作为标记标签的内容,这样的就是隐式形式,或者为 <label> 标签下的 for 属性命名一个目标表单 id,这样就是显式形式。

以上是W3C上的解释,那么显示的就是id喽,隐式就是属性for,用这两个方式来把表单映射成form,不知道对不对。

2、 @Html.LabelFor()
和@Html.Label()类似,只是主要针对强类型

例:

@Html.LabelFor(model=>mode.Name)         输出:    <label for="Name">Name</label>
@Html.LabelFor(model=>mode.Name,"姓名")  输出:<label for="name">姓名</label>
如果在上面实体添加[DisplayName("姓名")]特性(引用System.ComponentModel;)则会显示:
    <label for="Name">姓名</label>用于显示汉字很方便

好吧,什么叫强类型。

强类型:为所有变量指定数据类型称为“强类型”。

强/弱类型是指类型检查的严格程度的。语言有无类型,弱类型和强类型三种。无类型的不检查,甚至不区分指令和数据。弱类型的检查很弱,仅能严格的区分指令和数据。强类型的则严格的在编译期进行检查。

强类型语言在没有强制类型转化前,不允许两种不同类型的变量相互操作。Java、C# 、Apex和 Python 等都是强类型语言。

3、 @Html.LabelForModel()
例:@Html.LabelForModel("name") 输出: <label for="">name</label>

Editor标签,表示应用程序中的Input表单控件,在EditorExtensions实现

1、 @Html.Editor() 
返回一个由表达式表示的对象中的每个属性所对应的input元素

例:

a,@Html.Editor("name") 输出;<input class="text-box single-line" id="name" name="name" type="text" value="" />

在加载的时候为input初始化值,这里用asp.net MVC新增的ViewBag属性;

@{
        ViewBag.NameValue="张三"; // NameValue为动态类型
        或者
        ViewData["NameValue"]="张三";
    }
    @Html.Editor("NameValue") 输出<input class="text-box single-line" id="NameValue" name="NameValue" type="text" value="张三" />

c、@Html.Editor("name",Model.Name)
  第二个参数为object additionalViewData 参数 主要为视图模型的数据 (Model为System.Web.Mvc.Model对象,在加载页面引用@model Student 对象),

但不知道这样Input为什么没显示默认值。不知道不是不asp.net mvc3中不支持了,希望知道的给予说明下。

2、 @Html.EditorFor()

返回一个由表达式表示的对象中的每个属性所对应的input元素,主要是针对强类型,一般这种方式用得多些

a、@Html.EditorFor(mode=>mode.Name)

如果返回的View给Student实体赋予值,则输出输出<input class="text-box single-line" id="Name" name="Name" type="text" value="默认值" />否则Value为"";

b、@Html.EditorFor(mode=>mode.Name,"templateName")

第二个参数为模版名称,模版的定义:

首先在目录View/Shared/建立文件夹EditorTemplates/templateName.cshtml 即:View/Shared/EditorTemplates/templateName.cshtml

注:这务必用EditorTemplates作为文件夹

templateName.cshtml代码为: @Html.DropDownList("",new SelectList(new []{"1","2","3"}))表示一个值为1,2,3的下拉列表

这时就可以调用@Html.EditorFor(mode=>mode.Name,"templateName"),则显示成一个下拉列表,如果模版中设置的一个文本框则显示成文本框。

同时,也可以在实体Student中的Name属性加上[UIHint("templateName")]特性 如果加上这个则可在调用的时候不用显示指定模版名称

用@Html.EditorFor(mode=>mode.Name)即可显示成下拉框,同时所有用这个字段的都将变成下拉列表

相当与Html中的Input控件

@Html.EditorFor(model=>model.Age)

页面显示为:   <input id="Age" name="Age" type="text" value="" />

3、 @Html.EditorForModel()

如果使用默认值,不带任何参数,则循环显示Model中所有的信息,不过需要放在循环中

如:<input class="text-box single-line" id="Name" name="Name" type="text" value="" />

<input class="text-box single-line" id="Age" name="Age" type="text" value="" />

时间: 2024-10-13 20:19:45

Razor学习(二)@Html标签的相关文章

spring 自定义标签 学习二

在上篇中写的只支持写属性,不支持标签property的写法,但是如果有时候我们还想做成支持 property的用法,则可以在xsd中增加spring 自带的xsd引用 修改xsd文件如下: <?xml version="1.0"encoding="UTF-8"?> <xsd:schema xmlns="http://www.ruishenh.com/custom/myTest" xmlns:xsd="http://ww

Struts2框架学习(二) Action

Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器拦截请求,创建代理Action对象,执行方法,返回结果,界面跳转. 拦截器解析请求路径,获取Action的名称,到配置文件中查找action的完整类名,利用反射创建对象. 每请求一次,就创建一个对象,所以action是多例的,也是线程安全的. 2,关系 请求的路径和配置文件的对应关系: 配置文件中包

MVC3.0 中Razor 学习

C# 的主要 Razor 语法规则 Razor 代码封装于 @{ ... } 中 行内表达式(变量和函数)以 @ 开头 代码语句以分号结尾 字符串由引号包围 C# 代码对大小写敏感 C# 文件的扩展名是 .cshtml MVC3.0 中Razor 学习 随着MVC3.0RTM版本的发布,最近将公司的项目从MVC2.0升级到MVC3.0.同时打算在MVC3中全面使用Razor模板引擎.现将Razor学习拿出来和大家分享,如果存在不足的地方欢迎您指出. 其实在使用<%= %>在html中调用C#代

gmock学习二 转载

Google Mock启蒙篇 [2] (Google C++ Mocking Framework for Dummies 翻译) 2011-11-22 22:34:58|  分类: C++ |  标签:google  mock  测试  |举报|字号 订阅 Setting Expectations 成功地使用Mock对象的关键是在它上面设置合适的期望.如果你设置的期望太过严格,你的测试可能会因为无关的改变而失败.如果你把期望设置的太过松驰,bugs可能会溜过去.而你需要的是你的测试可以刚好捕获你

Redis学习二

Redis学习二 标签(空格分隔): Redis 一,link 链表结构 1,lpush key value (rpush插入到链表尾部) 作用: 把值插入到链接头部 2,rpop key(lpop key 返回并删除链表的头元素) 作用: 返回并删除链表尾元素 3,lrange key start stop 作用: 返回链表中[start ,stop]中的元素 规律: 左数从0开始,右数从-1开始 lrange link 0 2 lrange link 0 -1 4,lrem key coun

vue2.0学习(二)-全局API

vue2.0学习(二)-全局API GitHub源码 https://github.com/sunnyguyan/VueDemo 1.Vue.directive自定义指令 一.什么是全局API? 全局API并不在构造器里,而是先声明全局变量或者直接在Vue上定义一些新功能,Vue内置了一些全局API,比如我们今天要学习的指令Vue.directive.说的简单些就是,在构造器外部用Vue提供给我们的API函数来定义新的功能 二.Vue.directive自定义指令 我们在第一季就学习了内部指令,

SpringMVC入门学习(二)

SpringMVC入门学习(二) ssm框架 springMVC 在上一篇博客中,我简单介绍了一下SpringMVC的环境配置,和简单的使用,今天我们将进一步的学习下Springmvc的操作. model.addAttribute()的使用 model接口的源代码: 由图可知,在addAttribute()中有两种入参方式,一种是指明名字var1,一种是不指明名字var1.在不指明名字中,会通过相近的去寻找. 在addAttribute()中,我们可以放任何对象: 首先先导入jsp标签maven

[Python 学习] 二、在Linux平台上使用Python

这一节,主要介绍在Linux平台上如何使用Python 1. Python安装. 现在大部分的发行版本都是自带Python的,所以可以不用安装.如果要安装的话,可以使用对应的系统安装指令. Fedora系统:先以root登入,运行 yum install python Ubuntu系统:在root组的用户, 运行 sudo apt-get install python 2. 使用的Python的脚本 Linux是一个以文件为单位的系统,那么我们使用的Python是哪一个文件呢? 这个可以通过指令

OpenCV for Python 学习 (二 事件与回调函数)

今天主要看了OpenCV中的事件以及回调函数,这么说可能不准确,主要是下面这两个函数(OpenCV中还有很多这些函数,可以在 http://docs.opencv.org/trunk/modules/highgui/doc/user_interface.html 找到,就不一一列举了),然后自己做了一个简单的绘图程序 函数如下: cv2.setMouseCallback(windowName, onMouse[, param]) cv2.createTrackbar(trackbarName,

Makefile持续学习二

Makefile概述 一.Makefile里有什么? Makefile里主要包含5个东西:显式规则.隐晦规则.变量定义.文件指示和注释 1.显式规则:显式规则说明如恶化生成一个或多的目标文件,包含要生成的文件,文件的依赖文件,生成的命令 2.隐晦规则:由make自动推动功能完成 3.变量定义:变量一般都是字符串,类似C语言中的宏定义,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上 4.文件指示: 在一个Makefile中引用另一个Makefile 根据某些情指定Makefil