zoukankan      html  css  js  c++  java
  • 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="" />

  • 相关阅读:
    MySQL修改root密码的多种方法
    (转)云存储:阿里云OSS 、又拍云和 七牛 的比较
    微博feed系统的推(push)模式和拉(pull)模式和时间分区拉模式架构探讨
    Feed系统架构资料收集
    百万用户时尚分享网站feed系统扩展实践
    (转)浅谈MD5加密算法中的加盐值(SALT)
    json转换成list map集合
    android在假设绘制自己定义的bitmap,然后返回给ImageView
    APPCAN学习笔记003---原生开发与HTML5技术
    【问题解决】syntax error: unexpected end of file或-bash: ./full_build.sh: /bin/bash^M: bad interpreter: No
  • 原文地址:https://www.cnblogs.com/mihe/p/4007270.html
Copyright © 2011-2022 走看看