问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

高手进、、、.net mvc3.0中对表单的描述(如:一个文本框,后面跟着简单的...

发布网友 发布时间:2022-05-11 12:09

我来回答

4个回答

热心网友 时间:2022-04-27 12:09

上节我们学习了Model的数据在界面之间的传递,但是很多时候,我们在数据传递的时候为了确保数据的有效性,不得不给Model的相关属性做基本的数据验证。

本节我们就学习如何使用 System.ComponentModel.DataAnnotations 命名空间中的特性指定对数据模型中的各个字段的验证。

这些特性用于定义常见的验证模式,例如范围检查和必填字段。而 DataAnnotations 特性使 MVC 能够提供客户端和服务器验证检查,使你无需进行额外的编码来控制数据的有效。

System.ComponentModel.DataAnnotations 特性可用于实体数据模型 (EDM)、LINQ to SQL 和其他数据模型。 还可以创建自定义验证特性。

关于DataAnnotations请看System.ComponentModel.DataAnnotations概述
数据级别的验证

创建项目新建名为User的Model类
publicclass User { publicint ID { get; set; } }

以Create验证为例来学习DataAnnotations 验证。

新建Create方法
//新建 // GET: /User/Create public ActionResult Create() { return View(); }

添加视图

注意:在添加视图的时候,如果强类型视图找不到Model,建议在重新生成解决方案。

非空验证

publicclass User { publicint ID { get; set; } [DisplayName("姓名")] [Required(ErrorMessage = "姓名不能为空")] publicstring Name { get; set; } }

添加视图直接运行

字符长度验证
publicclass User { publicint ID { get; set; } [DisplayName("姓名")] [Required(ErrorMessage = "姓名不能为空")] publicstring Name { get; set; } [DisplayName("密码")] [StringLength(6, ErrorMessage = "密码不能超过6个字符")] publicstring Password { get; set; } }

添加视图后直接运行

数字验证
[DisplayName("年龄")] [Range(1, int.MaxValue, ErrorMessage = "请输入大于等于1的数")] publicint Age { get; set; }

添加视图直接运行

正则表达式验证
[DisplayName("电子邮件")] [RegularExpression(@"^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$",
ErrorMessage = "请输入正确的Email格式\n示例:abc@123.com")] publicstring Email { get; set; }

添加视图后运行效果

业务逻辑验证

远程服务端验证

Remote异步请求验证,在[HttpGet]时获取指定Controller里面的指定方法验证,此方法必须是[HttpGet]标记的,返回类型为Json类型的JavaScript对象。

Model代码
[DisplayName("姓名")] [Required(ErrorMessage = "姓名不能为空")] [Remote("GetUser", "User", ErrorMessage = "该姓名已存在")] publicstring Name { get; set; }

Controller代码
//HttpGet是必须加的 [HttpGet] public ActionResult GetUser(string name) { return Json(name != "aa", JsonRequestBehavior.AllowGet); }

直接添加视图运行

自定义Attbitue验证

Model代码
[Required] [StringLength(15)] [LoginUnique] publicstring Login { get; set; }

Attribute代码
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)] publicsealedclass LoginUniqueAttribute : ValidationAttribute { privatestaticreadonlystring DefaultErrorMessage = "login unique";//MUI.login_unique;public LoginUniqueAttribute() : base(DefaultErrorMessage) { } publicoverridestring FormatErrorMessage(string name) { return DefaultErrorMessage; } publicoverridebool IsValid(objectvalue) { return UserService.Check(p=>p.Name==value.ToString()); } }

直接添加视图运行

总结

其实微软DataAnnotations验证一直是在VS平台上面充分运用的,不管是Web程序还是WForm程序甚至是Silverlight程序,都可以使用微软提高的DataAnnotations验证,可以说是无孔不入啊。不过就这三种程序而言,MVC的验证相对来说还是比较完善的,简单适用。

热心网友 时间:2022-04-27 13:27

哈,我自已写的是public static MvcHtmlString Suggest<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression, string suggeststr, string classstr, IDictionary<string, string> htmlAttributes)
总之就是扩展方法,通过反射取的。想要性能的话,建立字典表并缓存是最佳做法。但会占内存(空间换时间或时间换空间啊)

热心网友 时间:2022-04-27 15:02

具体什么意思不是很明白,
Description 是你定义的变量吗?
但是举例来说 <%=ViewModel.Description%>
目前的描述,我只能这样的理解。追问Description不是我定义的变量。是属性。ViewModel中一个字段后面的描述。

追答真是不好意思了 我是不会了

热心网友 时间:2022-04-27 16:53

View中的话,就用jQuery获取追问具体怎么实现,能给个例子吗??或者说一下思路也行。
还有别的方案吗??

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
这是个成本会计题,马上要考这道原题了,求大虾帮忙 财务管理类问题,求大虾帮忙,小弟感激不尽。具体问题看问题补充。_百度... 光影魔术手怎么换底色 光影魔术手换底色教程 ...米的绳子围绕一棵树干饶了6圈,还余下1.16米,这棵树干上的直径大约是... ...还余下1.16米,这棵树的树干的直径大约是多少米?求算式! ibm x3500 M5 服务器 运行时风扇声音好大,吵死了,可以下掉一个吗... IBMX3500 M5,最近老是出现自动关机的情况,需要把服务器电源拔掉半分钟... 治疗萎缩性胃炎的方法 怎么治萎缩胃炎 JYF-40FS06电饭煲190块买的是假的吗 骆冰传。。 怎样用asp.net在后台 实现自定义字段(也就是用户可以添加或删除数据表中的字段), 谁能给出asp.net的form表单传值用法的例子? 骆冰吟传全文txt,有的私信 骆冰莹传 我在淘宝设置了自己的昵称,请问如果买东西时和卖家联系的话,那边显示的是淘宝会员名还是我的昵称? 速达3000.net自定义报表方案保存后预览是空白表格,没有数据 淘宝我就知道自己的会员名其它都不知道了怎么办? asp.net 请教如何在页面制作一个可以自动添加新行的表格? 退货时要填自己的淘宝账号、在哪里看得到、就是自己的会员名吗 我是用会员名注册的淘宝网,不知道自己的淘宝帐号是不是会员名,急求答案。 asp.net能不能实现用户自定义样式的表格 .NET里怎么才能自定义格式表格 .NET,如何实现用户自定义一张数据表之后,能自动生成对应该表的一个具有增删查改的模块,求实现思路? ASP.NET如何实现一些比较精美的表格?(自定义) Sql Server 2000,Sql,JS,.net, 金和OA-C63.0,自定义表单设计平台:Eform 空置的商铺或在出租的商铺如果没有缴纳房产税(租赁税),在出售过户时会被一次性收取吗? 商铺出租要交税吗, 自己的门面自己经营要交税吗 商铺停止经营了,还需要交之前的房屋租赁税吗 asp.net 自定义控件 2022年土耳其移民政策是有变化吗?有提前信息吗? 有骆冰传第三部吗? 土耳其移民政策 谁给个《骆冰传》下载地址 求本书叫骆冰传.. 谁有骆冰传或夫 妇乐 园的txt文件请发我网盘 土耳其移民护照有那些利弊? 消防兵属于陆兵吗陆兵包括哪些兵? 我很想当消防兵,可的别人都说消防兵很累,消防兵没有假期,您能告诉我有关消防兵的资料吗? 视频短号不能保存 百度有钱花提前还款,在借审核不通过是怎么回事。要多久可以借出来呢。有遇到同样问题的嘛。朋友 应用程序出错,IE出错 急:关于EXPLORER (IE浏览器) 浏览器兼容性问题,DIV+CSS的 IE的问题 浏览器兼容性问题,Webkit内核显示多出了三行,应该怎么修改? IE浏览器中毒了 have had to/have to have had to一般疑问句