• 知识点3-5:使用强类型模板


          当你开始使用一个基于表现式模型的强类型视图时,会看到越来越多的样式(如文本框、单选按钮、复选框、密码字段等)。

    • 模型类中的布尔型属性,几乎可以肯定你会希望它显示成表单上的一个复选框。
    • 模型类中的电子邮件型属性、密码属性等,都有特定的显示要求。
    • 输入元素不包括相应的验证消息是罕见的。

          ASP.NET MVC为我们提供了一种基于模型元数据进行渲染决策的方式,根据视图模型属性来生成HTML片段。如RequiredAttribute来标记视图模型,自动验证必填字段。

          通常为了在视图中显示信息,可能会使用HtmlHelper(HTML辅助器)对象,以协助获取视图模型来生成HTML。例如LoginModel清单如下。

        public class LoginModel
        {
            [Required]
            [Display(Name = "用户名")]
            public string UserName { get; set; }
    
            [Required]
            [DataType(DataType.Password)]
            [Display(Name = "密码")]
            public string Password { get; set; }
    
            [Display(Name = "记住我?")]
            public bool RememberMe { get; set; }
        }

          登录屏幕显示了每个属性的输入元素,如下图所示。

    @model Guestbook.Models.LoginModel
    
    @{
        ViewBag.Title = "登录";
    }
    
    <hgroup class="title">
        <h1>@ViewBag.Title.</h1>
    </hgroup>
    
    <section id="loginForm">
    <h2>使用本地帐户登录。</h2>
    @using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)
    
        <fieldset>
            <legend>“登录”表单</legend>
            <ol>
                <li>
                    @Html.LabelFor(m => m.UserName)
                    @Html.TextBoxFor(m => m.UserName)
                    @Html.ValidationMessageFor(m => m.UserName)
                </li>
                <li>
                    @Html.LabelFor(m => m.Password)
                    @Html.PasswordFor(m => m.Password)
                    @Html.ValidationMessageFor(m => m.Password)
                </li>
                <li>
                    @Html.CheckBoxFor(m => m.RememberMe)
                    @Html.LabelFor(m => m.RememberMe, new { @class = "checkbox" })
                </li>
            </ol>
            <input type="submit" value="登录" />
        </fieldset>
        <p>
            @Html.ActionLink("注册", "Register") 如果你没有帐户。
        </p>
    }
    </section>

          在上述清单中,我们利用了几个专为强类型视图页面设计的HtmlHelper扩展方法,包括标签方法LabelFor、输入文本框TextBoxFor、验证消息ValidationMessageFor。而不是松散类型的字符串来表示属性,@Html.TextBox("UserName")。
          Html.LabelFor和Html.TextBoxFor方法生成的HTML,如清单3.8所示。

    <label for="UserName">User name</label>
    <input id="UserName" name="UserName" type="text" value="" />

           使用强类型视图页面的HtmHelper扩展方法,页面有良好的可用性,不需担心硬编码的标签和输入元素名称。

    表3.1  ASP.NET MVC中的HTML辅助器 
    HTML辅助器 描述
    DisplayFor 用字符串显示属性的值
    DisplayTextFor 用字符串显示属性的值,不可编辑
    DisplayNameFor 显示字段名字
    EditorFor 根据属性的不同性质生成相应的HTML可编辑标记。例如,若为文本属性,则显示输入本文框;若为布尔属性,则显示单选框等。
     CheckBoxFor  返回复选框标记
     DropDownListFor  返回下拉列表标记
     HiddenFor  返回隐藏输入标记
     LabelFor  返回标签标记
     ListBoxFor  返回列表标记
     PasswordFor  返回密码文本框标记
     RadioButtonFor  返回单选按钮标记
     TextAreaFor  返回多行录入的文本框
     TextBoxFor  返回文本框标记
     ValidateFor  接受验证元数据,并对表达式属性的数据字段进行验证
     ValidationMessageFor  返回验证错误消息标记
     
     
  • 相关阅读:
    201116西瓜书机器学习系列---2、模型评估
    201116西瓜书机器学习系列---1、绪论
    js中null和undefined的区别
    ajax和pjax有什么区别
    html5中的web存储
    Java调用linux命令及Shell脚本
    plsql developer中,清除登录历史
    PLSQL自动登录,记住用户名密码&日常使用技巧
    Linux中查看进程状态信息
    Is there any difference between GROUP BY and DISTINCT
  • 原文地址:https://www.cnblogs.com/meetyy/p/4010812.html
Copyright © 2020-2023  润新知