知识点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  返回验证错误消息标记

 

 
 
posted @ 2014-10-08 11:37  liesl  阅读(422)  评论(0编辑  收藏  举报