HtmlHelper用法大全3:Html.LabelFor、Html.EditorFor、Html.RadioButtonFor、Html.CheckBoxFor

 @Html.***For:为由指定表示式 表示对象中的 每个属性,返回对应html

示例效果:

一、设置通用的验证方法

         Models层

  1. public class MyStringIsChineseAttribute: ValidationAttribute
  2. {
  3. #region 验证中文
  4. private bool _myreturn = false;
  5. public bool myNullDefVal
  6. {
  7. get { return _myreturn; }
  8. set { _myreturn = value; }
  9. }
  10. //覆盖父类方法(确定对象的指定值是否有效)
  11. public override bool IsValid(object value)
  12. {
  13. if (value == null) return _myreturn;
  14. return Regex.IsMatch(value.ToString(), @"^[\u4e00-\u9fa5]{0,}$", RegexOptions.IgnoreCase);
  15. }
  16. //覆盖父类方法(基于发生错误的数据字段对错误消息应用格式设置)
  17. public override string FormatErrorMessage(string name)
  18. {
  19. return "非中文字符!";
  20. }
  21. #endregion
  22. }

Controller层

  1. public class MyValidDataController : Controller
  2. {
  3. /// <summary>
  4. /// 姓名验证,只能是中文
  5. /// </summary>
  6. /// <param name="ExamineeName">姓名</param>
  7. /// <returns></returns>
  8. public JsonResult ExamineeNameCheck(string XM)
  9. {
  10. MyStringIsChineseAttribute ff = new MyStringIsChineseAttribute();
  11. bool myidexist = ff.IsValid(XM);
  12. if (!myidexist)
  13. {
  14. return Json("姓名只能是中文!", JsonRequestBehavior.AllowGet);
  15. }
  16. else
  17. {
  18. return Json(true, JsonRequestBehavior.AllowGet);
  19. }
  20. }
  21. }

二、Person类(Models层)

  1. public class Person
  2. {
  3. #region  属性定义
  4. [Display(Name = "姓名")]
  5. [Required(ErrorMessage="{0}不能为空.")]
  6. [StringLength(4, MinimumLength = 2, ErrorMessage = " {0} 最少 {2} 字符,最多{1}字符。")]
  7. [Remote("ExamineeNameCheck", "MyValidData")]//服务端参与的验证(注意:ExamineeNameCheck方法的参数名必须叫XM)
  8. //[RegularExpression(@"^[\u4e00-\u9fa5]{0,}$",ErrorMessage = "只能输入汉字")]//正则表达式
  9. public string XM{ get; set; }
  10. [Display(Name = "性别")]
  11. public bool XB { get; set; }
  12. [Display(Name = "爱好1")]
  13. public bool AH1 { get; set; }
  14. [Display(Name = "爱好2")]
  15. public bool AH2 { get; set; }
  16. [Display(Name = "学历")]
  17. public string XL { get; set; }
  18. [Display(Name = "备注")]
  19. public string BZ { get; set; }
  20. #endregion
  21. }

三、Controller层

  1. public class TestController : Controller
  2. {
  3. public ActionResult Index()
  4. {
  5. Person person = new Person();
  6. person.XM = "小张";
  7. person.XB = false;
  8. person.AH2 = true;
  9. List<SelectListItem> lists = new List<SelectListItem>
  10. {
  11. new SelectListItem{Text="大学",Value="大学"},
  12. new SelectListItem{Text="高中",Value="高中"},
  13. new SelectListItem{Text="初中",Value="初中"}
  14. };
  15. ViewData["XlList"] = lists;
  16. person.XL = "高中";
  17. person.BZ = "备注";
  18. return View(person);
  19. }
  20. [HttpPost]
  21. public ActionResult Index(Person person,FormCollection fc)
  22. {
  23. //注意防止页面反复提交
  24. string str = "";
  25. if (ModelState.IsValid)//模型状态字典实例有效
  26. {
  27. //一、验收数据的合法性
  28. //1、AJAX实现客户端数据验证(在数据被送到后台前,我们应该先进行一遍验证,这样可以节约很多资源)
  29. //2、同步方式完成数据验证
  30. if (String.IsNullOrEmpty(person.XM))
  31. {
  32. ViewData.ModelState.AddModelError("XM", "姓名不能为空!");
  33. return Index();//返回Index方法
  34. }
  35. str += "姓名:" + person.XM + "<br>";
  36. str += "性别:" + person.XB + "<br>";
  37. str += "爱好1:" + person.AH1 + "<br>";
  38. str += "爱好2:" + person.AH2 + "<br>";
  39. str += "学历:" + person.XL + "<br>";
  40. str += "备注:" + person.BZ + "<br>";
  41. }
  42. return Content(str);
  43. }
  44. }

四、Views层

    1. @model MvcApplication4.Models.Person
    2. @{
    3. ViewBag.Title = "Index";
    4. Layout = "~/Views/Shared/_Layout.cshtml";
    5. }
    6. <h2>编辑用户信息</h2>
    7. <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    8. <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
    9. @using (Html.BeginForm()) {
    10. @Html.ValidationSummary(true)
    11. <div>
    12. @Html.LabelFor(model => model.XM)
    13. @Html.EditorFor(model => model.XM)
    14. @Html.ValidationMessageFor(model => model.XM)
    15. </div>
    16. <div>
    17. @Html.LabelFor(model=>model.XB)
    18. @Html.RadioButtonFor(model => model.XB, true)男
    19. @Html.RadioButtonFor(model => model.XB, false)女
    20. @Html.ValidationMessageFor(model => model.XB)
    21. </div>
    22. <div>
    23. @Html.LabelFor(model => model.AH1)
    24. @Html.CheckBoxFor(model => model.AH1)
    25. @Html.LabelFor(model => model.AH2)
    26. @Html.CheckBoxFor(model=>model.AH2)
    27. </div>
    28. <div>
    29. @Html.LabelFor(model => model.XL)
    30. @Html.DropDownListFor(model => model.XL, ViewData["XlList"] as IEnumerable<SelectListItem>)
    31. </div>
    32. <div>
    33. @Html.LabelFor(model => model.BZ)
    34. @Html.TextAreaFor(model=>model.BZ,3,30,null)
    35. </div>
    36. <div>
    37. <input type="submit" value="保存" name="tj"/>
    38. </div>
    39. }

1个示例 学会 mvc 常用标签的更多相关文章

  1. HTML之一天学会html(常用标签+网页架构)

    1.  网页文件的创建 新建一个文本文件,将其命名为xxx.html或者xxx.htm(注意后缀名) 2.  简单的html页面的编写 在网页中都是通过标签来指定相应的显示内容,所有的页面内容都必须在 ...

  2. 一周学会HTML----Day02常用标签(上)

    扩展 在开始第二天的课程之前,我们先来拓展两个概念. 第一个是前台和后台:前台是指用户看到的界面,而后台是指相关具有前线的人操作的界面 第二个是前端和后端:前端是值用户看到的界面和界布的操作(安卓.i ...

  3. 一周学会HTML----Day03常用标签(下)

    form 标签 表单(重要) 表单用途 用于收集用户信息,提交给服务器 基本使用 (action,method,enctype) 要提交的表单必须放到form里 input select textar ...

  4. spring mvc常用注解的说明

    最近一段时间学习了springboot,所以熟悉一下mvc中常用的注解,这样可以方便开发 简介: @RequestMapping RequestMapping是一个用来处理请求地址映射的注解,可用于类 ...

  5. J2EE进阶(十三)Spring MVC常用的那些注解

    Spring MVC常用的那些注解 前言 Spring从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping, @RequestParam,@ModelAttribute等等这样 ...

  6. HTML之常用标签及属性

    标签 标签分类 标签名 英文 英文含义 标签类型 备注 HTML页面结构 < html> HyperText Markup Language 超文本标记语言 < head> h ...

  7. HTML有哪些标签?html常用标签大全

    html中标签有很多,每一种标签都有着不同的用处,下面这篇文章php中文网给大家总结html常用的标签,每一种标签都会跟随一个例子,话不多说,让我们来看看具体内容.<font>字体标签,用 ...

  8. html常用标签学习笔记

    本文内容: 前言:本文讲述的内容包括几类常用标签,以及这些标签的一些常用属性(有一些属性由于已经有CSS样式来代替,所以对于一些不重要的这里选择不讲) 排版标签 段落标签:p div span 标题标 ...

  9. html常用标签整理

    html文档结构 <!DOCTYPE html> <html lang="zh-CN"> #这个lang表示语言,zh-CN中文的意思,整个文档的内容以中文 ...

随机推荐

  1. Python数据聚合和分组运算(1)-GroupBy Mechanics

    前言 Python的pandas包提供的数据聚合与分组运算功能很强大,也很灵活.<Python for Data Analysis>这本书第9章详细的介绍了这方面的用法,但是有些细节不常用 ...

  2. loj #2510. 「AHOI / HNOI2018」道路

    #2510. 「AHOI / HNOI2018」道路 题目描述 W 国的交通呈一棵树的形状.W 国一共有 n−1 个城市和 nnn 个乡村,其中城市从 111 到 n−1 编号,乡村从 111 到 n ...

  3. loj #6046. 「雅礼集训 2017 Day8」爷

    #6046. 「雅礼集训 2017 Day8」爷 题目描述 如果你对山口丁和 G&P 没有兴趣,可以无视题目背景,因为你估计看不懂 …… 在第 63 回战车道全国高中生大赛中,军神西住美穗带领 ...

  4. HDU6300-2018ACM暑假多校联合训练1003-Triangle Partition

    题意是给3n个点,其中不可能存在任意三点共线的情况,让你在其中建n个三角形,点不能重复使用,三角形不能相互覆盖 做法是给每个点排序,按照先y轴排,再x轴排的顺序,三个三个一组从下往上输出,有人说是凸包 ...

  5. Python编程笔记二进制、字符编码、数据类型

    Python编程笔记二进制.字符编码.数据类型 一.二进制 bin() 在python中可以用bin()内置函数获取一个十进制的数的二进制 计算机容量单位 8bit = 1 bytes 字节,最小的存 ...

  6. docker构建mysql容器及Navicat 远程连接

    1. MySQL部署 1.1拉取MySQL镜像 docker pull mysql 查看镜像 docker images 1.2创建MySQL容器 首先建立所需要的 文件夹: docker run - ...

  7. docker 自定义镜像

    step1:自定义镜像 原镜像 registry.aspider.avlyun.org/library/php-apache docker run -d --name xz_apache regist ...

  8. 如果你是后台开发者,InnoDB的小秘密,你应该知道

    InnoDB简述 InnoDB由Innobase Oy公司所开发,2006年五月时由甲骨文公司并购.InnoDB支持了ACID兼容的事务(Transaction)功能,类似于PostgreSQL. 当 ...

  9. Spring学习笔记(三)—— 使用注解配置spring

    一.使用步骤 1.1 导包 1.2 为主配置文件引入新的命名空间(约束) 在applicationContext.xml中引入context约束 1.3 编写相关的类 public class Use ...

  10. centos上安装theano和Lasagne

    1.安装theano所需的包 sudo yum install python-devel python-nose python-setuptools gcc gcc-gfortran gcc-c++ ...